未定义使用 mingw 对 imp 的引用

问题描述 投票:0回答:2

我遇到的问题是构建项目时出现的“未定义引用‘_imp__...’”错误。我使用的是 Windows 7、MinGW、Eclipse 以及不是我制作的 .lib 和 .dll 文件,而是我直接从向我出售其产品的公司获取的。

我使用 -l 命令链接 HRDL.lib 文件,并且 PicoHRDL.dll 位于同一目录。找到了 lib 文件(我确信这一点),但出现了错误。我已使用 -L 命令包含完整路径。我已将头文件包含在函数声明中,我得到了未定义的引用,但错误仍然存在。

我已经联系了 Eclipse 支持和 Picotech 支持(上述公司),但他们到目前为止还无法定位问题。

这些是命令:

 gcc -O0 -g -Wall -c -fmessage-length=0 -o ACD_SOURCE.o "..\\ACD_SOURCE.c" 
 gcc "-LC:\\Users\\Falamana\\Desktop\\Eclipse\\ADC_project1\\Libraries" -shared -o libADC_24_DataLogger_App.exe ACD_SOURCE.o -lHRDL 

以下是错误:

ACD_SOURCE.o:在函数“main”中:

C:\Users\Falamana\Desktop\Eclipse\ADC_project1\Debug/../ACD_SOURCE.c:70: 对 `_imp__HRDLGetUnitInfo@16' 的未定义引用

C:\Users\Falamana\Desktop\Eclipse\ADC_project1\Debug/../ACD_SOURCE.c:99: 对 `_imp__HRDLCoseUnit@4' 的未定义引用

ACD_SOURCE.o:在函数“SelectUnit”中:

C:\Users\Falamana\Desktop\Eclipse\ADC_project1\Debug/../ACD_SOURCE.c:115: 对 `_imp__HRDLGetUnitInfo@16' 的未定义引用

C:\Users\Falamana\Desktop\Eclipse\ADC_project1\Debug/../ACD_SOURCE.c:167: 对 `_imp__HRDLGetUnitInfo@16' 的未定义引用

c eclipse windows gcc undefined-reference
2个回答
0
投票

就我而言,将

-mwindows
标志添加到链接器选项很有帮助。


-1
投票

请注意,在您的编译信息中,

-L
选项符号应该不在引号内。也就是说,

gcc "-LC:\Users\Falamana\Desktop\Eclipse\ADC_project1\Libraries" -shared -o libADC_24_DataLogger_App.exe ACD_SOURCE.o -lHRDL

应该是

gcc -L"C:\Users\Falamana\Desktop\Eclipse\ADC_project1\Libraries" -shared -o libADC_24_DataLogger_App.exe ACD_SOURCE.o -lHRDL

因此,请检查您使用的任何 IDE 中 lib 目录的配置,util 的 gcc 编译信息行看起来正常( util

-L
位于引号字符之前)。

© www.soinside.com 2019 - 2024. All rights reserved.