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

Qt Creator导入外部静态库报错:未定义Start_test引用

Qt静态库链接错误:Undefined reference to 'Start_test' 解决方法

你用MinGW编译C语言静态库,在Qt C项目中导入后出现链接错误,核心原因是**C和C的函数名修饰规则不一致**(C++会对函数名进行mangling,而C不会),同时pro文件配置有小问题,以下是具体解决步骤:

1. 修改头文件,添加C++兼容声明

修改test.h,用extern "C"包裹函数声明,让C++编译器按照C规则处理该函数:

#ifndef TEST_LIB_H 
#define TEST_LIB_H 

#ifdef __cplusplus
extern "C" {
#endif

int Start_test(); 

#ifdef __cplusplus
}
#endif

#endif // TEST_LIB_H

2. 确保静态库用MinGW正确编译

用MinGW的gcc工具重新编译静态库,生成对应格式的libtest.a:

# 编译生成目标文件
gcc -c test.c -o test.o
# 打包成静态库
ar rcs libtest.a test.o

把生成的libtest.a放到$$PWD/../testLib/lib/路径下。

3. 修正pro文件配置

原pro文件中LIBS行有语法错误,同时确认路径配置:

CONFIG += c++11 

# 修正ws2_32的链接写法
win32: LIBS += -lws2_32
# 链接静态库
LIBS += -L$$PWD/../testLib/lib/ -ltest 

# 确保INCLUDEPATH指向头文件所在目录(如果test.h在../testLib/inc下,需调整)
INCLUDEPATH += $$PWD/../testLib/inc
DEPENDPATH += $$PWD/../testLib/inc 

win32-g++: PRE_TARGETDEPS += $$PWD/../testLib/lib/libtest.a

4. 清理重建项目

在Qt Creator中执行:

  • 点击Build -> Clean All
  • 再点击Build -> Rebuild All
    清除旧编译缓存,确保新配置生效。

内容的提问来源于stack exchange,提问作者syrine dhouib

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 14:52:30