2014-09-09 4 views
0

J'ai vraiment un problème que je ne comprends tout simplement pas pourquoi il est là. Je souhaite utiliser LUA comme langage de script pour l'intégrer dans des applications C++.Visual Studio 2013 erreur LNK2019

J'ai téléchargé les fichiers binaires LUA (version 5.2.3 win64 vc12, au moment de la rédaction, le plus récent).

D'abord j'ai essayé un simple "Bonjour tout le monde" qui ressemble à ceci:

main.cpp:

#pragma comment(lib, "lua52") 

#include <stdio.h> 
#include "lua.hpp" 

int main(int argc, char* argv[]) 
{ 
    printf("Hello World of c++\n"); 

    lua_State* L = luaL_newstate(); 

    luaopen_base(L); 

    if (luaL_dofile(L, "test01.lua")) 
    { 
     printf("%s\n", lua_tostring(L, -1)); 
    } 

    lua_close(L); 

    getchar(); 

    return 0; 
} 

test01.lua:

print("Hello World of LUA\n")

Comme vous pouvez le voir est un code très simple.

J'ai modifié les répertoires d'inclusion pour inclure le chemin d'accès des fichiers d'en-tête et j'ai modifié les répertoires de bibliothèque pour inclure le chemin d'accès à la bibliothèque lua52.lib.

Mais pour une raison quelconque, je reçois l'erreur: « LNK2019 d'erreur ... »

J'espère que quelqu'un sait ce qu'il faut faire.

Merci!

+1

double possible de [Qu'est-ce qu'une erreur de symbole de référence externe non défini/non résolu et comment puis-je résoudre ce problème?] (Http://stackoverflow.com/questions/12573816/what-is-an-undefined-reference -unresolved-external-symbol-error-et-how-do-i-fix) – CoryKramer

+2

Lorsque vous utilisez une bibliothèque 64 bits, vérifiez que la plate-forme de compilation de votre programme est 'x64' (64 bits). Si elles ne correspondent pas, alors vous obtenez des erreurs de lien. – Rimas

+1

@Rimas, merci beaucoup c'était exactement ce qui n'allait pas ... Je n'ai jamais regardé la plate-forme de construction (stupide moi) – Zydar

Répondre

0

La "bitness" doit correspondre, la bibliothèque et la cible doivent être construites sur la même plate-forme cible; Par conséquent, pour la bibliothèque 64 bits, votre binaire doit également être 64 bits; il en va de même pour les versions 32 bits.


Vous aurez besoin de lier la bibliothèque;

#pragma comment(lib, "lua52.lib") // note the .lib 

La question a été étiquetée comme C++. Lua semble être implemented in C, donc dans votre application C++ (si compilée en tant que telle, qui est la valeur par défaut), vous devrez peut-être l'inclure comme;

extern "C" { 
    #include "lua.hpp" 
} 
+0

J'espérais vraiment que ce serait une erreur aussi stupide que la mienne. malheureusement, il ne fonctionne toujours pas – Zydar

+0

@Zydar, Vous avez probablement plus de bibliothèques manquantes. Quels symboles ne trouve-t-il pas? – Niall

+0

Je pensais à plus de bibliothèques manquantes aussi. Je ne peux pas savoir lesquels. Les symboles qu'il ne trouve pas sont: "luaL_newstate", "luaL_loadfilex", "luaopen_base", "lua_pcallk", "lua_tolstring" et "lua_close" – Zydar

Questions connexes