ric*_*chj 4 compiler-construction silverlight c++-cli visual-studio-2010 silverlight-4.0
我有一个C++/CLI库,我想在Silverlight应用程序中使用它.应该可以在任何.NET语言中为Silverlight编写代码,但到目前为止我只研究了如何编译C#.Silverlight似乎无法使用为.NET编译的DLL.
我正在使用Visual Studio 2010和Silverlight 4. Silverlight唯一可用的新项目是C#项目.将代码移植到C#不是一个实用的选择.
如何为Silverlight编译C++/CLI代码?
Ben*_*igt 10
我想我可能已经获得了一个VS2010 C++/CLI类库项目来构建(仅)Silverlight程序集.
好的,有可能.但这并不好.
首先,您必须使用未记录的编译器开关说服C++编译器不加载.NET Framework.但这不是最糟糕的部分.
/clr:safe/d1clr:nomscorlib /FU"C:\Program Files (x86)\Microsoft Silverlight\4.0.50917.0\mscorlib.dll"现在,保存项目并退出Visual Studio.在文本编辑器中打开.vcxproj,然后更改框架版本设置.您希望它与C#Silverlight项目相同:
<TargetFrameworkIdentifier>Silverlight</TargetFrameworkIdentifier>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>
现在,重新打开Visual Studio,并构建项目.您将收到错误,因为编译器自动生成了一个文件,#using<mscorlib>搜索路径首先找到.NET Framework版本.
Silverlight,Version=v4.0.AssemblyAttributes.cpp(1): fatal error C1197: cannot reference 'c:\windows\microsoft.net\framework\v4.0.30319\mscorlib.dll' as the program has already referenced 'c:\program files (x86)\microsoft silverlight\4.0.50917.0\mscorlib.dll'
双击该错误以打开自动生成的文件.用例如(这里是您放置引用的位置,而不是项目属性中)替换无路径引用
#using <c:\program files (x86)\microsoft silverlight\4.0.50917.0\mscorlib.dll>
#using <c:\program files (x86)\microsoft silverlight\4.0.50917.0\System.dll>
#using <c:\program files (x86)\microsoft silverlight\4.0.50917.0\System.Core.dll>
幸运的是,编译器将您的更改保留在原位.所以只要没有人清理你的临时目录你就应该很好.
然后,您需要将C++/CLI项目创建的DLL添加到Silverlight应用程序中.请注意,您无法设置项目引用,因为VS2010仍然不相信C++/CLI是Silverlight项目.因此,您必须浏览并将引用添加为程序集文件.(并且它不会在Debug和Release之间自动切换以匹配Silverlight应用程序).
我让它在调试模式下运行一个空的Silverlight应用程序,并在C++/CLI代码中间的断点处停止.此外,C++/CLI代码成功将值返回给C#,C#中的局部变量收到了正确的值.所以我猜它有效.
我经历了一些尝试使这项工作更多的步骤,但我认为它们不会影响结果.如果你遇到错误,请告诉我,我会试着弄清楚我在这个答案中省略了什么.
| 归档时间: |
|
| 查看次数: |
3619 次 |
| 最近记录: |