LNK2019未解析的符号,使用Visual Studio 2012编译LuaJava。

我正在使用Visual Studio 2012编译LuaJava,遇到的问题是在调用链接程序时出错。在makefile中调用链接程序的行如下:

 link  /dll /LIBPATH:"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\x64"
       /LIBPATH:"C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib\amd64"
       /out:luajava-1.1.dll src\c\luajava.obj
       "C:\Program Files (x86)\Lua\5.1\lib\lua5.1.lib" /VERBOSE

这似乎几乎成功地链接了所有内容,直到它到达Lua库为止。

当我尝试构建项目时,链接器输出以下内容:

...//链接其他库
已完成搜索库

未使用的库:
C:\Program Files (x86)\Lua\5.1\lib\lua5.1.lib
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib\amd64\OLDNAMES.lib

luajava.obj : error LNK2019: "未解析的外部符号 lua_close",该符号在函数 "Java_org_keplerproject_luajava_LuaState__1close" 中被引用
luajava.obj : error LNK2019: "未解析的外部符号 lua_newthread",该符号在函数 "Java_org_keplerproject_luajava_LuaState__1newthread" 中被引用
luajava.obj : error LNK2019: "未解析的外部符号 lua_gettop",该符号在函数 "Java_org_keplerproject_luajava_LuaState__1getTop" 中被引用
...//许多这样的错误
luajava-1.1.dll : fatal error LNK1120: 88 unresolved externals
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\BIN\x86_amd64\link.EXE"' : 返回代码 '0x460'
停止。

我不明白为什么它说Lua库未使用,但是当它找不到Lua库函数时又抱怨。

点赞
用户487892
用户487892

你不能将一个32位的库链接到你的64位应用程序中。经过一些搜索,我不相信LuaJava有一个x64的下载,所以要使用它,你必须将你的应用程序改为32位。

编辑: 第二种方法是将LuaJava重新编译成64位的dll。这里有一个最近的帖子: LuaJava compile error "Unresolved external symbol"

2013-11-13 05:02:24