You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C库调用出现‘undefined reference to `test`’错误的原因排查求助

解决Code::Blocks中调用自定义库时的"undefined reference"错误

出现undefined reference to 'test'是因为链接器找不到test函数的实现代码,以下是具体排查和解决步骤:

  • 给调用程序项目添加库依赖
    打开你的C程序项目(tregpol.c所在项目),右键项目选择「Build options」:

    1. 切换到「Linker settings」标签页
    2. 点击「Add」按钮,选中同目录下的.a静态库文件(如果是动态库则选对应的导入库)
    3. 若使用动态库,还要确保.dll文件放在程序输出目录或系统可搜索路径中,否则运行时会找不到库
  • 检查库的函数导出配置

    1. 查看.def文件,确认已正确导出test函数,格式如下:
      EXPORTS
          test
      
    2. 也可以通过代码声明控制导出/导入,修改optim.h:
      #ifndef OPTIM_H_INCLUDED
      #define OPTIM_H_INCLUDED
      
      #ifdef BUILD_DLL
      #define DLL_EXPORT __declspec(dllexport)
      #else
      #define DLL_EXPORT __declspec(dllimport)
      #endif
      
      DLL_EXPORT void test();
      
      #endif // OPTIM_H_INCLUDED
      
    3. 编译库项目时,在「Build options」的「Compiler settings」->「#defines」中添加BUILD_DLL,确保函数被正确导出
  • 统一编译架构
    确认库项目和调用程序项目的编译架构一致(同为32位或64位),可以通过Code::Blocks工具栏的架构选择下拉框(如Win32/x86、x64)快速检查

  • 补充:修复库文件的编译警告
    optim.c中使用printf但未包含头文件,建议添加#include <stdio.h>,避免编译库时出现警告:

    #include "optim.h"
    #include <stdio.h>
    
    void test()
    {
        printf("It works!");
    }
    

内容的提问来源于stack exchange,提问作者Bogdan Doicin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 12:45:18