【发布时间】:2016-10-06 05:42:04
【问题描述】:
我遇到的问题是在我构建项目时出现“对 '_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' 的未定义引用
【问题讨论】:
-
您正在编译 64 位版本吗?失败的导入看起来像是从 32 位二进制文件中导出的(带有
__stdcall名称装饰)。 -
感谢您的评论!它有很大帮助!所以,我正在使用 64 位库构建,但是,pico 的代码示例说构建一个 32 位应用程序。我的问题是:要构建一个 32 位应用程序,我只需要 64 位库还是需要其他任何东西?例如,不同的功能(我正在使用 pico 的功能,如您在原始问题中所见)。再次感谢!
-
您不能混合位数。 32 位应用程序需要 32 位库,而 64 位应用程序需要 64 位库。您不能编译 32 位应用程序并链接到 64 位库。
标签: c eclipse windows gcc undefined-reference