早上好,
我正在尝试使用bjam二进制文件和g ++(mingw)构建luabind。
Lua root位于'D:\ Dev \ lua-5.1.4 \',
*。这里的文件:'D:\ Dev \ lua-5.1.4 \ lib \ libluadll.dll.a'
* .dll文件在这里:'D:\ Dev \ lua-5.1.4 \ lib \ luadll.dll'
所有这些* .o文件编译得很好,但是当它开始链接时,出现了问题:
gcc.link.dll bin\gcc-mingw-4.4.1\debug\libluabindd.dll.a
d:/programms/codeblocks/mingw/bin/../lib/gcc/mingw32/4.4.1/../../../../mingw32/b
in/ld.exe: cannot find -llibluadll.dll.a
collect2: ld returned 1 exit status
"g++" -L"D:\Dev\lua-5.1.4\lib" "-Wl,--out-implib,bin\gcc-mingw-4.4.1\debug\
libluabindd.dll.a" -o "bin\gcc-mingw-4.4.1\debug\libluabindd.dll" -shared -Wl,-
-start-group "bin\gcc-mingw-4.4.1\debug\src\class.o" "bin\gcc-mingw-4.4.1\debug\
src\class_info.o" "bin\gcc-mingw-4.4.1\debug\src\class_registry.o" "bin\gcc-ming
w-4.4.1\debug\src\class_rep.o" "bin\gcc-mingw-4.4.1\debug\src\create_class.o" "b
in\gcc-mingw-4.4.1\debug\src\error.o" "bin\gcc-mingw-4.4.1\debug\src\exception_h
andler.o" "bin\gcc-mingw-4.4.1\debug\src\function.o" "bin\gcc-mingw-4.4.1\debug\
src\inheritance.o" "bin\gcc-mingw-4.4.1\debug\src\link_compatibility.o" "bin\gcc
-mingw-4.4.1\debug\src\object_rep.o" "bin\gcc-mingw-4.4.1\debug\src\open.o" "bin
\gcc-mingw-4.4.1\debug\src\pcall.o" "bin\gcc-mingw-4.4.1\debug\src\scope.o" "bin
\gcc-mingw-4.4.1\debug\src\stack_content_by_name.o" "bin\gcc-mingw-4.4.1\debug\s
rc\weak_ref.o" "bin\gcc-mingw-4.4.1\debug\src\wrapper_base.o" -Wl,-Bstatic -Wl
,-Bdynamic -llibluadll.dll.a -Wl,--end-group -g
...failed gcc.link.dll bin\gcc-mingw-4.4.1\debug\libluabindd.dll.a bin\gcc-mingw
-4.4.1\debug\libluabindd.dll...
...failed updating 2 targets...
所以,我将libluadll.dll.a重命名为lua5.1,lua5.1.a,但它仍然会输出相同的错误信息。
先谢谢。
答案 0 :(得分:1)
首先,-l{name}
指令搜索lib{name}.dll
和lib{name}.a
。因此,您的-llua
应该是-llibluadll.dll.a
,而不是{{1}}。
其次,Lua库是用g ++编译的吗?由不同编译器编译的目标文件和库通常是不兼容的。
答案 1 :(得分:0)
g++
命令行的这一部分是错误的:
-llibluadll.dll.a
如果要链接libfoo.dll
,则右侧链接器标志为-lfoo
(无lib,无dll)。
如果您有静态存档并且想要静态链接,只需命名存档,不要使用-l
前缀(并指定路径,如果找不到)。