我正在開發一個託管庫(使用Microsoft Web服務),我將其包括到一個C++項目中。該項目不使用/clr
選項, ,所以當我包括我的圖書館的頭文件VS2005顯示我的錯誤 說我必須使用/clr
選項。這樣做我有一個不兼容 與/EHs
命令行選項(錯誤D8016),但從EHs
更改爲 沒有異常處理不解決問題,並繼續顯示我相同的錯誤。本地C++編寫C#託管代碼
任何建議是值得歡迎的。
預先感謝您。
我正在開發一個託管庫(使用Microsoft Web服務),我將其包括到一個C++項目中。該項目不使用/clr
選項, ,所以當我包括我的圖書館的頭文件VS2005顯示我的錯誤 說我必須使用/clr
選項。這樣做我有一個不兼容 與/EHs
命令行選項(錯誤D8016),但從EHs
更改爲 沒有異常處理不解決問題,並繼續顯示我相同的錯誤。本地C++編寫C#託管代碼
任何建議是值得歡迎的。
預先感謝您。
您不能使用非託管C++應用程序中的託管庫。由於您添加了/ clr選項,因此您的C++應用程序也會受到管理(僅用於記錄:))
以下是可能對您有幫助的信息:http://msdn.microsoft.com/en-us/library/ffkc918h.aspx -/clr選項的限制。
幾乎正確:要從非託管代碼使用託管庫,您需要創建包裝庫或以其他方式導出非託管符號。 – 2011-05-23 11:08:12
不,它不會工作,在那個鏈接它告訴達笏是事物clr不可編輯的,我想解決這個錯誤,沒有解決方案,直到找到指定的鏈接:( – user765829 2011-05-23 11:13:33
可以編寫託管C++適配器,它將調用C#庫,並從非託管C++程序調用此適配器,就像您通常調用普通的C++庫一樣。如果出於任何原因想要保持它不被管理,你將使用/ clr和你的主要C++程序編譯你的適配器庫。
如果有非託管C++代碼,並希望使用託管代碼,您有幾種選擇:
/clr
開關。您可以嵌入單聲道環境並啓動AppDomain。 mono的運行時API將允許您實例化類並調用它們的成員。這將是笨拙,但將努力
http://www.mono-project.com/Embedding_Mono
注意,Mono是一個完整的.NET 4.0兼容的CLR,它可以在Windows上使用微軟的核心庫工作。
在Windows和Unix上,它可以與Mono corlib/class庫一起工作。 Mono中沒有覆蓋的區域,但它們看起來很稀疏。您可以使用MoMa工具來確定您的應用程序是否使用不兼容/不完整的API。
或者你可以使用微軟的.NET框架,假設你在Windows上!
您不能在同一個項目中編寫C#和C++代碼。 – 2011-05-23 10:31:43
如果不使用'/ clr'選項,則無法創建託管庫。 – Gabe 2011-05-23 10:35:41
@CodyGray:是的,你可以;閱讀[.netmodule](http://msdn.microsoft.com/en-us/library/k669k83h.aspx)文件。 – ildjarn 2011-05-23 15:01:22