背景资料
我正在尝试根据此Instructions构建GAUL库。
问题
我在C中有两个静态库,由我在Dev-CPP Windows 7 64位中构建,一个引用另一个。
为了测试那些我创建了引用它们的控制台应用程序。
当我尝试编译时,这是我得到的日志:
> Compiler: Default compiler > Building Makefile: "C:\Soft\GAUL\Makefile.win" > Executing make... > make.exe -f > "C:\Soft\GAUL\Makefile.win" all > **gcc.exe ../gaul-devel-windows/examples/struggle.o -o "struggle.exe" -L"C:/Dev-Cpp/lib" gaul-util.a gaul-devel.a** > > gaul-util.a(memory_util.o)(.text+0x2e):memory_util.c: undefined reference to '_imp__mem_chunk_new_real' > gaul-util.a(memory_util.o)(.text+0x6c):memory_util.c: undefined reference to '_imp__mem_chunk_free_real' > ... > gaul-devel.a(ga_core.o)(.text+0x101):ga_core.c: undefined reference to 'slink_free_all' > gaul-devel.a(ga_core.o)(.text+0x360):ga_core.c: undefined reference to 'mem_chunk_new_real' > ... > collect2: ld returned 1 > exit status > > make.exe: *** [struggle.exe] Error 1 > > Execution terminated
我认为它与gcc
命令中使用的参数有关。
实际状态
我试过了:
- 将库复制到C:\ Dev-Cpp \ lib
- 在库名称之前使用整个地址
- 在图书馆名称之前使用-l
- 在名称
.a
其中任何一项都不成功。
有人能指出我正确的方向吗?
提前致谢。
答案 0 :(得分:0)
链接器(ld)的参数顺序很重要。如果您的构建在
上失败gcc.exe ../gaul-devel-windows/examples/struggle.o -o "struggle.exe" -L"C:/Dev-Cpp/lib" gaul-util.a gaul-devel.a
行,然后尝试颠倒最后两个文件的顺序:
gcc.exe ../gaul-devel-windows/examples/struggle.o -o "struggle.exe" -L"C:/Dev-Cpp/lib" gaul-devel.a gaul-util.a
答案 1 :(得分:0)
最后作为@ ThiefMaster♦说我在这个案例VC ++中使用了一个更新的构建器,它刚刚起作用了!