我正在將一個託管C++項目轉換爲C#文件。 C++項目包含一個常量C++頭文件,它是項目外的外部依賴項。在C#文件中包含一個C++頭文件
在新創建的C#文件中,有沒有辦法包含這個C++頭文件?我不想在C#文件中重新定義這些常量,因爲客戶端的更改將發生在C++頭文件上。
我正在將一個託管C++項目轉換爲C#文件。 C++項目包含一個常量C++頭文件,它是項目外的外部依賴項。在C#文件中包含一個C++頭文件
在新創建的C#文件中,有沒有辦法包含這個C++頭文件?我不想在C#文件中重新定義這些常量,因爲客戶端的更改將發生在C++頭文件上。
這是不可能包括它。
您有2個選項真的
正如其他人所指出的,您可以自動化第一個。
你如何保持它與C++頭同步?手動? –
我可能編寫了一個簡單的工具來讀取頭文件併發出一個包含任何需要的聲明的C#文件。 –
@jay_t - 請參閱David Heffernan的評論 - 完全一樣。 – SteveLove
不幸的是,這是不可能的,因爲C#編譯器不知道如何處理.h文件。即使這樣做,在.NET中使用未定義範圍的變量聲明(常量或其他)也是非法的。
您必須手動轉換文件,或者如Joachim Pileborg的評論中所述,構建一個實用程序以將其自動轉換爲C#代碼。
如果你有一個巨大的頭文件數量,你可以在SWIG看一看:http://www.swig.org/
這將產生從C/C++頭文件C#文件。
欲瞭解更多信息見:http://www.swig.org/Doc2.0/SWIGDocumentation.html#CSharp
的結果是相當令人印象深刻!但命名更像C++,比C#風格...但這是預期的...
這可能是不可能的。儘管你可以編寫一個工具來獲取這個頭文件,並在構建C#解決方案時生成所需的C#源文件。 –
我編寫了一個自定義實用程序,通過預生成操作來更新c#文件,以便在C++文件更改爲需要在c#和非託管C++代碼之間共享常量的代碼時進行更新。工作很好。 – pstrjds
@JoachimPileborg:該工具被稱爲SWIG;) –