我有一個C++項目(visual studio 2010),它也包含本機代碼和C++/cli代碼。我不能用/ clr編譯整個項目,所以我只是爲相應的C++/cli文件做這件事。我的問題是頭文件不能用/ clr編譯,但是我想在整個項目中重新使用一些C++/cli函數,因此在頭文件中定義方法原型以將其包含在每個需要它的文件中。有解決方案嗎?我試圖在頭文件中定義一些混合代碼方法原型,但必須打開/ clr才能編譯。C++/cli接口頭文件
這是我的例子:
Test.h
Test.cpp的
#include "Test.h"
int Test::Foo()
{
return 4;
}
智能感知與誤差Test.h抱怨像C++/CLI必須啓用使用#using。但我認爲這是微不足道的,它會編譯。
編譯與鏈接錯誤(SRY,我有德國VS版本)
Fehler 6 error LNK1255: Fehler bei Verknüpfung aufgrund von Metadatenfehlern.
Fehler 4 error LNK2022: Fehler bei Metadatenoperation (8013118D) : Duplizierte Typen (_PROPSHEETPAGEA) wurden gefunden, aber die Typenlayoutinformationen sind nicht konsistent: (0x02000198).
Fehler 5 error LNK2022: Fehler bei Metadatenoperation (8013118D) : Duplizierte Typen (_PROPSHEETPAGEW) wurden gefunden, aber die Typenlayoutinformationen sind nicht konsistent: (0x020001d1).
我絕對沒有一個重複類「測試」別處中止,所以我不知道在哪裏重複從何而來。什麼是佈局信息以及它們爲什麼不一致?
如何用/ clr編譯部分項目而不編譯?爲什麼你的本地代碼不能用於/ clr? – svick
它是一個3dsMax插件,用/ clr編譯整個項目並不行,我收到了很多錯誤。 Autodesk推薦的方法是僅編譯/ clr的C++/cli代碼部分。對於每個.cpp文件,您可以在屬性中設置「使用公共語言運行庫」。 – Michbeckable
你能發表一個頭文件的簡潔例子,並使用不能編譯的cpp文件嗎?另外,頭文件是由/ clr cpp和non/clr cpp使用的嗎? –