GCC编译C++调用nlohmann/json出现大量undefined reference错误
问题原因与解决方法
编译器选择错误
你当前使用的gcc是C语言编译器,默认不会自动链接C标准库,你看到的所有std::相关的未定义引用报错都来源于此。编译C代码需要使用g++命令。头文件路径配置错误
你使用的-I/include参数指向的是系统根目录下的include文件夹,而你提到nlohmann的头文件存放在源文件所在目录的子文件夹中,正确的路径应该用相对路径写法,比如头文件放在当前目录的include子文件夹下,参数应该写-I./include。
另外-L是第三方静态/动态库的搜索路径参数,nlohmann json是纯头文件库,不需要额外链接,这个参数是多余的,可以直接删掉。
正确编译命令
g++ -Wall -o prova -I./include prova.cc
额外说明
代码中关于pi和happy的未使用变量仅为警告,不影响编译结果,如果你想要消除警告,可以在代码中增加变量使用逻辑(比如打印变量值),或者在编译参数中添加-Wno-unused-variable。
内容的提问来源于stack exchange,提问作者Buriburi96
相关产品推荐
相关产品推荐

