Dev-C++调用WGFMU库编译出现undefined reference链接错误
Dev-C++ 下 WGFMU 系列函数 undefined reference 报错排查方案
undefined reference 属于链接阶段错误,和头文件是否正确引入无关,核心原因是链接器无法找到 WGFMU 函数对应的实际实现二进制代码
- 第一步:添加 WGFMU 官方库文件到项目
官方SDK通常会提供后缀为.lib的静态库/导入库文件,wgfmu.h仅存储函数声明,函数的实际实现都存放在库文件中,未引入库文件会直接触发链接错误。
Dev-C++ 引入库的操作路径:顶部菜单项目->项目属性->参数标签页 -> 点击「添加库或对象」按钮,选中 SDK 中提供的 WGFMU 对应.lib文件,确认保存后重新编译。 - 第二步:匹配库架构与编译目标架构
若 Dev-C++ 使用默认32位 MinGW 编译器,必须引入32位版本的 WGFMU 库,误用64位库会导致链接器无法识别库内容,触发同样报错。可在工具->编译选项中查看当前编译器的目标架构,也可直接选取 SDK 32位目录下的库文件重新引入。 - 第三步:修复 C/C++ 名称修饰不兼容问题
若 WGFMU 官方库是用C语言编译的,且头文件未加extern "C"包裹,C编译器会按照C的名称修饰规则查找函数,和库中存储的C风格函数名无法匹配,也会触发该报错。
修改main.cpp中引入头文件的代码为以下格式即可:extern "C" { #include "wgfmu.h" } - 第四步:引入 GPIB 通信依赖库
部分 WGFMU 库依赖 GPIB 驱动对应的库文件(例如 NI-VISA 驱动的visa.lib),除 WGFMU 本身的库之外,也需要将驱动安装目录下的对应依赖库按第一步的操作添加到项目中。
如果以上操作完成后仍然报错,可以尝试更换更新版本的 MinGW-w64 编译器,老版本 Dev-C++ 自带的 MinGW 对 MSVC 编译的.lib文件兼容性较差,也可直接使用 Visual Studio 编译官方示例,兼容性更好。
内容的提问来源于stack exchange,提问作者davmc
相关产品推荐
相关产品推荐

