当前我正在尝试编译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