未定义 使用 mingw 对 imp 的引用

Undefined Reference to imp using mingw

提问人:Philemon 提问时间:6/6/2016 最后编辑:theBPhilemon 更新时间:10/30/2023 访问量:8189

问:

我遇到的问题是“对'_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__HRDLCloseUnit@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 未定义引用

评论

0赞 IInspectable 6/6/2016
您是否正在编译 64 位版本?失败的导入看起来像是从 32 位二进制文件(带有名称修饰)导出的。__stdcall
0赞 Philemon 6/13/2016
感谢您的评论!它帮了大忙!所以,我正在使用 64 位库构建,但是,pico 的代码示例说要构建一个 32 位应用程序。我的问题是:要构建 32 位应用程序,我只需要 64 位库还是需要其他任何东西?例如,不同的函数(我使用的是 Pico 的函数,正如您在原始问题中看到的那样)。再次感谢!
0赞 IInspectable 6/13/2016
你不能混合位数。32 位应用程序需要 32 位库,而 64 位应用程序需要 64 位库。不能编译 32 位应用程序并链接到 64 位库。

答:

-1赞 lulyon 6/6/2016 #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

评论

0赞 Philemon 6/13/2016
我试着改变它,但我咕咕叫。但是,当我构建项目时,命令似乎工作得很好,因为如果我输入“错误”的图书馆名称,就会出现错误,因为找不到图书馆,但是当我正确输入它时,不会出现错误。我还需要想办法,还是没问题?
0赞 Aconcagua 3/22/2020 #2

就我而言,向链接器选项添加标志会有所帮助。-mwindows