开发者

G++ on windows: cannot fild -llua5.1

Good morning,

I'm trying to build luabind using bjam binaries and g++ (mingw).

Lua root is in 'D:\Dev\lua-5.1.4\',

*.a file here: 'D:\Dev\lua-5.1.4\lib\libluadll.dll.a'

*.dll file here: 'D:\Dev\lua-5.1.4\lib\luadll.dll'

All these *.o files were compiled well, but when it started linking it, something went wrong:

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.开发者_Go百科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...

So, I renamed libluadll.dll.a into lua5.1, lua5.1.a, but it's still prints the same error message.

Thanks, beforehand.


Firstly, -l{name} directive searches for lib{name}.dll and lib{name}.a. So, yours should be -llua, not -llibluadll.dll.a.

Secondly, are Lua libraries compiled with g++ too? Object files and libraries compiled by different compilers are incompatible in general.


This part of the g++ command line is wrong:

-llibluadll.dll.a

If you want to link against libfoo.dll, the right linker flag is -lfoo (no lib, no dll).

If you have a static archive and you want a static link, just name the archive, with no -l prefix (and specify a path if it's not found).

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜