背景信息
我正在尝试根据此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'的 undefined reference
> gaul-util.a(memory_util.o)(。text + 0x6c):memory_util.c:对'_imp__mem_chunk_free_real'的 undefined reference
> ...
> gaul-devel.a(ga_core.o)(。text + 0x101):ga_core.c:对“slink_free_all”的 undefined reference
> gaul-devel.a(ga_core.o)(。text + 0x360):ga_core.c:对“mem_chunk_new_real”的 undefined reference
> ...
> collect2:ld返回1
>退出状态
>
> make.exe:*** [struggle.exe]错误1
>
>执行终止

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

实际状态
我试过了:
-将库复制到C:\ Dev-Cpp \ lib
-在库名称之前使用整个地址
-在库名称之前使用-l
-名称后不使用.a
这些都不成功。

有人能指出我正确的方向吗?

提前致谢。

最佳答案

链接器(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

关于c - 在DEV-CPP中构建链接到静态库的控制台应用程序时,如何解决对_imp __ **的 undefined reference ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12323374/

10-11 16:06