我有一個Visual C++項目,其中添加了rapidjson庫,該庫已經過測試,可以正常工作。但是,當我嘗試編譯時向嵌套類添加rapidjson::Document
類型時拋出了LNK2019
錯誤。該項目是一個動態庫來創建一個DLL。LNK2019:使用rapidjson的「無法解析的外部符號」
這是我main.h的定義:
class coreBD {
string conn;
string proxy;
int type;
Document test;
enum dataBases {
Sqlite,
SqlServer,
None
};
string queryBD(string sSQL);
string queryHTTP(string sSQL);
string httpRequest(string url, string proxy);
static string getNow(string format);
static string urlEncode(string url);
static bool startsWith(string source, string with);
public:
enum access {
dbConn,
HTTPProtocol
};
//Nested class
class jsonObj {
string jsonStr;
string message;
Document doc; //HERE IS THE PROBLEM
bool validMsg;
public:
enum response {
FullResponse,
SQLResponse
};
jsonObj(string json);
string getJsonStr(response rType);
string getErrorMsg();
bool isValidResponse();
};
coreBD(string connStr, access connType);
jsonObj query(string sSQL);
void setProxy(string proxy);
};
這是錯誤:
error LNK1120: 1 unresolved externals
error LNK2019: unresolved external symbol "private: __thiscall rapidjson::GenericValue,class rapidjson::MemoryPoolAllocator >::GenericValue,class rapidjson::MemoryPoolAllocator >(class rapidjson::GenericValue,class rapidjson::MemoryPoolAllocator > const &)" ([email protected][email protected]@[email protected]@[email protected]@[email protected]@@[email protected]@[email protected]@[email protected]@@Z) referenced in function "public: __thiscall rapidjson::GenericDocument,class rapidjson::MemoryPoolAllocator >::GenericDocument,class rapidjson::MemoryPoolAllocator >(class rapidjson::GenericDocument,class rapidjson::MemoryPoolAllocator > const &)" (??0?$GenericDocument[email protected][email protected]@[email protected]@[email protected]@[email protected]@@[email protected]@[email protected]@[email protected]@@Z)
當我評論的評論線與在這裏的錯誤消失是問題代碼中的。如您所見,在coreBD
類中使用test
變量不會導致錯誤。在嵌套類中僅僅存在類型爲rapidjson::Document
的變量會導致顯示錯誤;不管我是否使用它都沒關係。
可能是什麼問題?
編輯:
新的信息收集。
當我在父級內使用嵌套類時,會出現問題,但只在方法的return
中使用。換句話說:我可以創建rapidjson::Document
類型作爲成員變量,我可以在coreBD
類創建一個方法與jsonObj
類型的一切,我可以實例jsonObj
該方法內,但我不能如果類返回類型jsonObj
的值jsonObj
有一個rapidjson::Document
成員變量聲明。
例如這個新創建的方法:
jsonObj coreBD::testOBJ()
{
string json = "{error:null, message:None, errorMessage:MoreNone}";
jsonObj b(json);
return b; //It fails here if I return a nested class with a rapidjson::Document in it. Returning NULL works
}
編輯:
新問題,繼續解決這個:Perform a copy of Document object of rapidjson
添加rapidjason的庫文件作爲您的項目屬性的參考。 –
@Trinity rapidjson只是頭文件,包含在我的項目中的'#include's,正如你所看到的,這個庫在我的項目的其他部分都能正常工作 – SysDragon
這是一個單獨的解決方案嗎?這意味着您的應用程序的其他工作部分被放置在您項目的不同解決方案中。 – XAMlMAX