【发布时间】:2011-06-08 04:21:44
【问题描述】:
目前我正在尝试为 Silverlight 项目编译一个 C/C++ 库,以便在 silverlight In-Browser 应用程序中重用基于 c 的编解码器 - FFMpeg。
尝试的方法:
1) 尝试在 Silverlight DLL 项目中包含一个 C++ 类,方法是将在 dll 中导出的 c 函数声明为 - __declspec(dllexport)
编译工作正常,但是当我尝试从 Silverlight 项目中引用 C 方法时,会导致 CLR 之外的本机调用问题。
网址参考。 - 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 Wrapper Class Lib 项目,该项目调用 C++ CLR Lib,它也是一个托管程序集
- 将 C#/.Net 托管程序集 Wrapper dll 转换为 silverlight 托管程序集 dll
- 在 silverlight 应用程序中使用 silverlight dll
网址参考。 - http://www.netfxharmonics.com/2008/12/Reusing-NET-Assemblies-in-Silverlight
结论:不确定可能性,因为我仍在尝试通过转换步骤获得成功,这有点复杂。
是否有经过测试的方法能够在 Silverlight Lib 中重用 C 代码?
TIA, 安东尼
【问题讨论】:
标签: .net silverlight