我目前正在研究Windows 10上的項目,並被要求使用一些C++代碼。代碼是以平臺獨立的方式編寫的。所以我使用給定的cmake文件來構建一個visual studio解決方案(VS 2015 Update 3)。但是當我嘗試構建解決方案時,它會給我提供超過900個錯誤和警告。cmake生成的視覺工作室解決方案無法構建
使用cmake和g ++在mac上成功構建了同一個項目。該項目本身使用Qt gui和一些額外的庫,如boost。
要了解你要知道的錯誤,該解決方案包括5個項目:ALL_BUILD,iModControll,iModDaemon,iModView和ZERO_CHECK
有想了很多錯誤:
missing type specifier - int assumed. Note: C++ does not support default-int
inconsistent dll binding
declaration not found
unexpected token before ;
and so on... You can see the full list here
我對cmake非常新穎,而不是VS專家,所以請幫助我理解這裏出了什麼問題。再說一遍:在OSX下完美編譯的代碼。
編輯:
我用MinGW的,作爲@MaxGo建議。之後,錯誤和警告就減少了。以下是我現在有:
warning: void DC_TermFunc()' redeclared without dllimport attribute after being referenced with dll linkage
void DC_TermFunc(void)
{
if(controller)
{
qDebug() << "Terminating iModSkynet";
runthread->terminate();
delete runthread; // This will delete the controller too
}
}
error: function 'void DC_SendData(char, char*, int)' definition is marked dllimport
IMODCONTROLLSHARED_EXPORT void DC_SendData(char oc, char* data, int length)
{
QByteArray qdata = QByteArray(data, length);
controller->sendBlenderCommunication(oc, qdata);
}
其他錯誤是相似的。我的問題是:在將C++源代碼移植到Windows時,是否存在任何已知問題,爲什麼它沒有顯示與VS中一樣多的錯誤,以及我可以如何解決這些錯誤?
這個問題幾乎沒有代碼本身就沒用。在提供代碼之前,請注意它應該是某種[mcve] - Stack Overflow是針對特定問題的,而不是「幫我調試一些大代碼」。但是,最好是谷歌每個具體的錯誤,並採取適當的行動:要麼糾正代碼,要麼改變編譯器選項。 – Tsyvarev
如果您的項目之前從未使用Visual Studio msvc編譯器構建過,則最重要的是它不會「從框中」工作。您可以嘗試在Windows上使用MinGW構建項目,這可能會更好。 –
@MaxGo非常感謝您的幫助!我編輯了我的帖子,使問題更清楚。 – Carlz