对rapidjson :: Value的未定义的引用

时间:2017-08-25 12:05:05

标签: c++ rapidjson

我有一个使用rapidjson的项目,它在OS X上用cmake和Xcode编译得很好。

我很困惑为什么我得到以下未定义的引用错误(德语输出,“Nicht definierter Verweis auf”表示“未定义引用”:

../libraries/hdm-concave-lib/build/libhdm-concave-lib.a(geojson2pointcloud.cpp.o): In Funktion `hdm::concave::Geojson2PointCloud::toPointCloud(std::string, double)':
geojson2pointcloud.cpp:(.text+0xb4a): Nicht definierter Verweis auf `GeojsonParser::parseGeometry(rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> >&)'
collect2: error: ld returned 1 exit status
hdm-concave/CMakeFiles/hdm-concave.dir/build.make:96: die Regel für Ziel „hdm-concave/hdm-concave“ scheiterte
make[2]: *** [hdm-concave/hdm-concave] Fehler 1
CMakeFiles/Makefile2:85: die Regel für Ziel „hdm-concave/CMakeFiles/hdm-concave.dir/all“ scheiterte
make[1]: *** [hdm-concave/CMakeFiles/hdm-concave.dir/all] Fehler 2
Makefile:83: die Regel für Ziel „all“ scheiterte
make: *** [all] Fehler 2

相关方法的标题如下所示:

class GeojsonParser
{
public:
...
    bool parseGeometry(rapidjson::Value& geometry);
}

实施是这样的:

bool GeojsonParser::parseGeometry(rapidjson::Value &geometry) {
    _isGeometryCollection = false;
    bool res = parseFeatureType(geometry);
    return res;
}

如果我用_parser.parseGeometry注释掉这一行,项目会成功编译和链接(当然程序没有做任何有用的事情)。

for (Value::ValueIterator itr = features.Begin(); itr != features.End(); ++itr) {
        if (!itr->HasMember("geometry")) continue;

        if (itr->HasMember("geometry")) {
            Value& geomVal = (*itr)["geometry"];
            _parser.parseGeometry(geomVal); // <-- linker error here
        }
    }

我没有看到任何我做错的事,但我怀疑这与我无法获得的rapidjson有关。你有没有遇到同样的问题,知道如何解决它?

0 个答案:

没有答案