Windows上的G ++:不能fild -llua5.1

时间:2011-07-09 09:29:52

标签: linker g++

早上好,

我正在尝试使用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,但它仍然会输出相同的错误信息。

先谢谢。

2 个答案:

答案 0 :(得分:1)

首先,-l{name}指令搜索lib{name}.dlllib{name}.a。因此,您的-llua应该是-llibluadll.dll.a,而不是{{1}}。

其次,Lua库是用g ++编译的吗?由不同编译器编译的目标文件和库通常是不兼容的。

答案 1 :(得分:0)

g++命令行的这一部分是错误的:

-llibluadll.dll.a

如果要链接libfoo.dll,则右侧链接器标志为-lfoo(无lib,无dll)。

如果您有静态存档并且想要静态链接,只需命名存档,不要使用-l前缀(并指定路径,如果找不到)。