當前我正在嘗試編譯Silverlight項目的C/C++庫,以便在Silverlight In-Browser應用程序中重新使用基於c的編解碼器-FXMpeg。創建具有C/C++參考的Silverlight程序集
途徑的嘗試:
1)嘗試通過聲明其在DLL導出爲c函數中包含Silverlight DLL項目中的C++類 - (DLLEXPORT)__declspec
彙編作品,但是當我試圖在CLR問題之外的本機調用中引用Silverlight項目結果中的C方法。
url ref。 - http://social.msdn.microsoft.com/Forums/en-US/clr/thread/339afacb-c9f2-46a4-9feb-8df793a65155
因此,我在進一步閱讀後意識到silverlight錯誤是因爲CLR能夠只允許託管程序集而不是本地代碼。
結論:在Silverlight dll中不能直接包含C++/C代碼。
2)接下來,我一直在嘗試創建一個基於C++的託管程序集,目標是在Silverlight託管程序集中包含一個簡單的C++類/ C函數。
步驟 -
- 創建一個C++ CLR類庫項目提供託管程序
- 創建一個C#/。NET包裝類庫項目,它調用C++ CLR庫,這也是一個管理組件 。
- 轉換的C#/。NET管理組件包裝DLL到一個Silverlight管理組件的dll
- 消耗Silverlight應用程序
url ref。 - http://www.netfxharmonics.com/2008/12/Reusing-NET-Assemblies-in-Silverlight
結論:不確定可能性,因爲我仍然試圖通過有點複雜的轉換步驟取得成功。
是否有經過測試的方法能夠在Silverlight Lib中重用C代碼?
TIA, 安東尼
本週最後嘗試了Silverlight 5選項,其判決是它仍然無法運行混合程序集(C++/C)silverlight dll。它會導致安全異常錯誤。僅當用戶通過註冊表項確認信任級別時纔可以訪問(讀取/寫入)某些文件夾/文件。 – Anthony 2011-06-18 15:05:47
該操作的最終目標是擁有一個Silverlight兼容庫,它直接加載編譯在Silverlight dll中的C/C++函數。試圖避免在客戶端安裝任何東西。所有的代碼/ lib應該嵌入In瀏覽器Silverlight應用程序本身。 – Anthony 2011-06-18 15:15:38