1

我正在使用 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 库。

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

...//linking of other libraries
Finished searching libraries

Unused libraries:
  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: unresolved external symbol lua_close referenced in function Java_org_keplerproject_luajava_LuaState__1close
luajava.obj : error LNK2019: unresolved external symbol lua_newthread referenced in function Java_org_keplerproject_luajava_LuaState__1newthread
luajava.obj : error LNK2019: unresolved external symbol lua_gettop referenced in function Java_org_keplerproject_luajava_LuaState__1getTop
...//lots of these errors 
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"' : return code '0x460'
Stop.

我很困惑为什么它说 Lua 库未使用,然后在找不到 Lua 库函数时抱怨。

4

1 回答 1

1

您不能将 32 位库链接到 64 位应用程序。经过一些搜索,我不相信 LuaJava 有 x64 下载,因此要使用它,您必须将应用程序更改为 32 位。

编辑:第二种方法是将 LuaJava 重新编译为 64 位 dll。这是最近的一篇文章:LuaJava compile error "Unresolved external symbol"

于 2013-11-13T05:02:24.290 回答