2011-05-23 183 views
2

我有一些託管C++程序集與簡單的代碼。C++託管和非託管靜態庫

該程序集混合了(託管/非託管)代碼。如果我將非託管代碼放到單獨的非託管靜態庫並將其與託管代碼鏈接,那麼我得到的註冊錯誤如下:「無法加載'xxxxxx.dll',因爲它不是有效的.NET程序集」。

如果我把所有的代碼放到一個項目中並且一起構建,那麼所有代碼​​都可以正常工作。我曾在VS2008 + .NET3.5 + RegAsm .Net2.0上試過它。我的大會已簽署。

我想爲非託管靜態庫和託管程序集保存我的代碼分離。

我需要做什麼?

在此先感謝。

+0

它有可能包含「混合代碼」?您是否在談論「不安全代碼」?它仍然是託管然後.. – vines 2011-05-23 14:41:20

+0

不,他是在談論混合模式大會見http://msdn.microsoft.com/en-us/library/x0w2664k.aspx – Yaur 2011-05-23 15:00:00

+0

刪除我的答案,因爲它是錯的。看看這個相關的SO問題,我認爲它會幫助你。 http://stackoverflow.com/questions/2691325/c-cli-mixed-mode-dll-creation – Yaur 2011-05-23 15:08:59

回答

1

您的庫必須構建爲動態使用C++運行時(從.NET 2.0開始)。

在項目屬性中,打開C/C++,然後轉到代碼生成。查找運行時庫,並設置爲多線程DLL進行發佈,並設置多線程調試DLL進行調試。