如何在CMake项目中链接外部库?Qt Creator纯C++项目链接报错求助
编译报错解决步骤
1. 修改CMake配置
你出现undefined reference报错的核心原因是libcpnet是C语言实现的库,你当前的CMake配置只开启了C++编译支持,且没有正确添加库的源码文件,调整如下:
cmake_minimum_required(VERSION 3.5) # 新增C语言编译支持 project(eshraagh-project LANGUAGES CXX C) set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) # 新增C语言标准配置,适配libcpnet的实现要求 set(CMAKE_C_STANDARD 99) set(CMAKE_C_STANDARD_REQUIRED ON) add_executable(eshraagh-project main.cpp server/server.h server/server.cpp client/client.h client/client.cpp # 新增libcpnet的源码文件,路径按你实际存放的位置调整即可 cpnet-export.h cpnet-network.h cpnet-network.c )
2. 修正头文件引入方式
所有C文件(main.cpp、server.cpp、client.cpp等)引入libcpnet头文件时,需要用extern "C"包裹,避免C的名字修饰机制找不到C语言实现的函数符号:
extern "C" { #include "cpnet-network.h" }
函数前缀差异说明
示例代码里的net_开头函数名是头文件定义的宏,实际会被预编译展开为cpnet_开头的真实函数名,所以Qt补全提示的cpnet前缀是真实的函数符号名,直接按补全提示写或者按示例用net前缀都可以正常运行。
内容的提问来源于stack exchange,提问作者Roozbeh Sayadi
相关产品推荐
相关产品推荐

