This question already has answers here:
What is an undefined reference/unresolved external symbol error and how do I fix it?

(34个答案)


4年前关闭。




当我运行以下代码时:
#include <cstdio>
#include <iostream>
#include <fstream>
#include <cstring>
#include <C:\Users\User\Documents\jsoncpp-master\dist\json\json.h>
#include <C:\Users\User\Documents\jsoncpp-master\dist\json\json-forwards.h>

using namespace std;

int main(){
    Json::Value root;
    Json::Reader reader;

    ifstream file("test.json");

   return 0;
}

我收到以下错误:
undefined reference to `Json::Reader::Reader()'
undefined reference to `Json::Value::Value(Json::ValueType)'

我正在尝试编写一个程序来读取JSON文件,并且此代码还必须输出JSON文件中的数据,以供其他C++模块使用。

更新
#include <cstdio>
#include <iostream>
#include <fstream>
#include <cstring>
#include "dist\jsoncpp.cpp"
using namespace std;

int main(){

    Json::Value root;
    Json::Reader reader;

    ifstream file("test.json");

    return 0;
}

我更改了代码以删除完整链接,并插入了运行后得到的dist文件夹:
python amalgamate.py

然后将头文件输入C:\ MinGW \ include

我现在在jsoncpp.cpp文件中遇到很多错误(这是我在运行python命令后得到的文件,而我根本没有进行任何更改)。所有错误
说相同的消息,即:
first defined here

最佳答案

仅在源代码中包含h个文件是不够的。
您需要在项目中编译jsoncpp.cpp。
请关注https://github.com/open-source-parsers/jsoncpp#generating-amalgamated-source-and-header
并将jsoncpp.cpp,json / json.h,json / forwards.h添加到您的项目中。

10-08 04:14