1

背景信息
我正在尝试根据此Instructions构建 GAUL 库。

问题
我在 C 语言中有两个静态库,由我在 Dev-CPP Windows 7 64 位中构建,一个引用另一个。

为了测试那些我创建了一个引用它们的控制台应用程序。

好吧,当我尝试编译时,这是我得到的日志:

> 编译器:默认编译器  
> 构建 Makefile:“C:\Soft\GAUL\Makefile.win”  
> 执行制作...  
> make.exe -f  
> "C:\Soft\GAUL\Makefile.win" 全部  
> **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: 未定义引用 '_imp__mem_chunk_new_real'  
> gaul-util.a(memory_util.o)(.text+0x6c):memory_util.c: 未定义引用 '_imp__mem_chunk_free_real'  
> ...  
> gaul-devel.a(ga_core.o)(.text+0x101):ga_core.c: 未定义对“slink_free_all”的引用   
> gaul-devel.a(ga_core.o)(.text+0x360):ga_core.c: 未定义对“mem_chunk_new_real”的引用  
> ...  
> collect2: ld 返回 1  
> 退出状态
>
> make.exe: *** [struggle.exe] 错误 1
>
> 执行终止

认为这与gcc命令中使用的参数有关。


我尝试过的实际状态
: - 将库复制到 C:\Dev-Cpp\lib
- 在库名称之前使用整个地址 - 在库名称
之前使用 -l -在名称之后
不使用.a

任何这些都没有成功的结果。

谁能指出我正确的方向?

提前致谢。

4

2 回答 2

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
于 2012-09-07T21:04:00.063 回答
0

最后,正如@ThiefMaster♦ 所说,我在这种情况下使用了一个更新的构建器 VC++,它就可以工作了!

于 2012-09-16T05:10:14.133 回答