对 'json11::Json::d ump(std::string&) const' collect2 的未定义引用:错误:ld 返回 1 个退出状态



我在我的项目中使用json11

#include "crow_all.h"
#include "sqlOperations/sqlcpp_db_connection.cpp"
#include "date.h"
#include <json11.hpp>
int main() {
   crow::SimpleApp app;
   CROW_ROUTE(app,"/navOfFund")
            .methods("POST"_method)
    ([](const crow::request& req){
        auto x = crow::json::load(req.body);
        if (!x)
            return crow::response(400);
        auto name = x["fund_name"].s();
        std::ostringstream os;
        vector<double>nav =  select_from_fund_type(name);
        json11::Json json(nav);
        //std::cout << json.dump() << std::endl;
        return crow::response{json.dump()};
    });
    crow::logger::setLogLevel(crow::LogLevel::Debug);
    app.port(18080).multithreaded().run();
    return 0;
}

和我正在编译我的项目使用下面的命令

g++ -std=c++1y -L/usr/local/lib -I ../../date main.cpp -ljson11 -lsqlpp-mysql -lmysqlclient -lboost_system -lpthread

错误是

/tmp/ccqQDgWQ.o: In function `json11::Json::dump() const':
main.cpp:(.text._ZNK6json114Json4dumpEv[_ZNK6json114Json4dumpEv]+0x2c): undefined reference to `json11::Json::dump(std::string&) const'
collect2: error: ld returned 1 exit status

我找不到错误的根本原因。

但我不知道为什么,这工作得很好。

#include <iostream>
#include <json11.hpp>
int main()
{
   std::vector<double> test_vector { 0.1, 0.2, 0.3, 0.4, 0.5 };
   json11::Json json(test_vector);
   std::cout << json.dump() << std::endl;
}

和使用

编译
g++ -std=c++1y json_test.cpp -ljson11

函数void dump(std::string &out).hpp文件中没有定义,参见这里。
相反,它是在.cpp文件中定义的,即在这里。

你应该这样做:

g++ -std=c++1y -L/usr/local/lib -I ../../date main.cpp json11.cpp -lsqlpp-mysql -lmysqlclient -lboost_system -lpthread

最新更新