[英]Linking errors with lua & luabind - mingw
I am using luabind for binding my C++ classes to lua, I can get luabind and most lua functions to work, but if I try to use luaL_openlibs()
I get: 我正在使用luabind将我的C ++类绑定到lua,我可以使luabind和大多数lua函数正常工作,但是如果尝试使用
luaL_openlibs()
我会得到:
undefined reference to 'luaL_openlibs'
collect2: ld returned 1 exit status
if I add -llua to the linker I get: 如果将-llua添加到链接器,则会得到:
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../liblua.a(lapi.o):lapi.c:(.text+0x15c): multiple definition of 'lua_gettop'
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../libluabindd.dll.a(d000253.o):(.text+0x0): first defined here
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../liblua.a(lapi.o):lapi.c:(.text+0x170): multiple definition of 'lua_settop'
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../libluabindd.dll.a(d000296.o):(.text+0x0): first defined here
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../liblua.a(lapi.o):lapi.c:(.text+0x244): multiple definition of 'lua_pushvalue'
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../libluabindd.dll.a(d000278.o):(.text+0x0): first defined here
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../liblua.a(lapi.o):lapi.c:(.text+0x274): multiple definition of 'lua_type'
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../libluabindd.dll.a(d000307.o):(.text+0x0): first defined here
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../liblua.a(lapi.o):lapi.c:(.text+0x388): multiple definition of 'lua_touserdata'
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../libluabindd.dll.a(d000306.o):(.text+0x0): first defined here
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../liblua.a(lapi.o):lapi.c:(.text+0x414): multiple definition of 'lua_pushnil'
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../libluabindd.dll.a(d000274.o):(.text+0x0): first defined here
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../liblua.a(lapi.o):lapi.c:(.text+0x42c): multiple definition of 'lua_pushnumber'
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../libluabindd.dll.a(d000275.o):(.text+0x0): first defined here
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../liblua.a(lapi.o):lapi.c:(.text+0x450): multiple definition of 'lua_pushinteger'
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../libluabindd.dll.a(d000271.o):(.text+0x0): first defined here
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../liblua.a(lapi.o):lapi.c:(.text+0x46c): multiple definition of 'lua_pushboolean'
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../libluabindd.dll.a(d000268.o):(.text+0x0): first defined here
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../liblua.a(lapi.o):lapi.c:(.text+0x85c): multiple definition of 'lua_concat'
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../libluabindd.dll.a(d000235.o):(.text+0x0): first defined here
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../liblua.a(lapi.o):lapi.c:(.text+0x8e8): multiple definition of 'lua_pushlstring'
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../libluabindd.dll.a(d000273.o):(.text+0x0): first defined here
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../liblua.a(lapi.o):lapi.c:(.text+0x97c): multiple definition of 'lua_error'
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../libluabindd.dll.a(d000240.o):(.text+0x0): first defined here
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../liblua.a(lapi.o):lapi.c:(.text+0xb5c): multiple definition of 'lua_pcall'
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../libluabindd.dll.a(d000267.o):(.text+0x0): first defined here
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../liblua.a(lapi.o):lapi.c:(.text+0xbdc): multiple definition of 'lua_pushcclosure'
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../libluabindd.dll.a(d000269.o):(.text+0x0): first defined here
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../liblua.a(lapi.o):lapi.c:(.text+0xf98): multiple definition of 'lua_pushstring'
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../libluabindd.dll.a(d000276.o):(.text+0x0): first defined here
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../liblua.a(lapi.o):lapi.c:(.text+0x104c): multiple definition of 'lua_settable'
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../libluabindd.dll.a(d000295.o):(.text+0x0): first defined here
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../liblua.a(lapi.o):lapi.c:(.text+0x10d4): multiple definition of 'lua_rawgeti'
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../libluabindd.dll.a(d000282.o):(.text+0x0): first defined here
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../liblua.a(lapi.o):lapi.c:(.text+0x111c): multiple definition of 'lua_rawget'
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../libluabindd.dll.a(d000281.o):(.text+0x0): first defined here
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../liblua.a(lapi.o):lapi.c:(.text+0x1278): multiple definition of 'lua_objlen'
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../libluabindd.dll.a(d000266.o):(.text+0x0): first defined here
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../liblua.a(lapi.o):lapi.c:(.text+0x12ec): multiple definition of 'lua_tolstring'
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../libluabindd.dll.a(d000302.o):(.text+0x0): first defined here
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../liblua.a(lapi.o):lapi.c:(.text+0x1368): multiple definition of 'lua_tointeger'
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../libluabindd.dll.a(d000301.o):(.text+0x0): first defined here
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../liblua.a(lapi.o):lapi.c:(.text+0x13a4): multiple definition of 'lua_tonumber'
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../libluabindd.dll.a(d000303.o):(.text+0x0): first defined here
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../liblua.a(lstate.o):lstate.c:(.text+0xf4): multiple definition of 'lua_close'
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../libluabindd.dll.a(d000234.o):(.text+0x0): first defined here
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../liblua.a(lauxlib.o):lauxlib.c:(.text+0x40): multiple definition of 'luaL_newstate'
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../libluabindd.dll.a(d000219.o):(.text+0x0): first defined here
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../liblua.a(lauxlib.o):lauxlib.c:(.text+0x20c): multiple definition of 'luaL_loadfile'
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../libluabindd.dll.a(d000216.o):(.text+0x0): first defined here
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../liblua.a(lauxlib.o):lauxlib.c:(.text+0x5e0): multiple definition of 'luaL_unref'
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../libluabindd.dll.a(d000229.o):(.text+0x0): first defined here
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../liblua.a(lauxlib.o):lauxlib.c:(.text+0x664): multiple definition of 'luaL_ref'
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../libluabindd.dll.a(d000226.o):(.text+0x0): first defined here
collect2: ld returned 1 exit status
I built luabind myself because I could find no prebuilt mingw binaries. 我自己建立了luabind,因为我找不到预建的mingw二进制文件。
I figured it out. 我想到了。
The problem was that I was linking to lua in a static library. 问题是我链接到静态库中的lua。 I ended up downloading http://sourceforge.net/projects/luabinaries/files/5.1.4/Windows%20Libraries/lua5_1_4_Win32_dllw4_lib.zip , rebuilding luabind to link to that, and setting my project to link to it also.
我最终下载了http://sourceforge.net/projects/luabinaries/files/5.1.4/Windows%20Libraries/lua5_1_4_Win32_dllw4_lib.zip ,重建了luabind以链接到该链接,并将我的项目也设置为链接到该链接。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.