繁体   English   中英

在DEV-CPP中构建与静态库链接的控制台应用程序时,如何解决对_imp __ **的未定义引用?

[英]How to solve undefined reference to _imp__** while building a console application in DEV-CPP linked to a static library?

背景资料
我正在尝试根据此说明构建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

这些都不成功。

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

提前致谢。

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

最后,@ ThiefMaster♦说,在这种情况下,我使用了一个较新的生成器VC ++,它确实起作用了!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM