Windows下CLion使用cJSON编译出现未定义引用错误求助
解决CLion中cJSON库的未定义引用编译错误
你遇到的是链接器错误——编译器能找到cJSON.h里的函数声明,但链接阶段找不到cJSON.c中的函数实现,本质是你只把头文件放进了项目,却没告诉CMake要编译这个源文件。下面给你两种简单可行的解决方法:
方法1:直接将cJSON.c添加到可执行目标中
打开项目根目录的CMakeLists.txt,找到add_executable指令,把cJSON.c追加到源文件列表里:
add_executable(Client main.c cJSON.c) # 注:把Client换成你的实际可执行文件名,main.c替换成项目主源文件名,确保cJSON.c和CMakeLists.txt路径匹配
修改完成后,点击CLion顶部的「Reload CMake Project」按钮,重新编译就能解决问题。
方法2:将cJSON编译为静态库再链接
如果后续要在多个项目目标中复用cJSON,这种方式更规范:
- 在CMakeLists.txt中添加静态库编译规则:
add_library(cjson STATIC cJSON.c)
- 给你的可执行目标链接这个静态库:
add_executable(Client main.c) target_link_libraries(Client PRIVATE cjson)
同样,重新加载CMake配置后编译即可。
额外检查项
- 确认
cJSON.c和cJSON.h确实在项目目录下,如果放在子文件夹里,需要用${CMAKE_CURRENT_SOURCE_DIR}/子文件夹名来指定文件路径,或者用include_directories添加头文件搜索路径。 - 若使用MinGW工具链,确保没有编译选项或路径冲突,比如头文件路径是否被CMake正确识别。
内容的提问来源于stack exchange,提问作者Pouya Esmaili
相关产品推荐
相关产品推荐

