如何将非托管c++ dll添加到Silverlight 5项目中
How to add unmanaged C++ dll into a Silverlight 5 project
我需要在Silverlight 5项目中使用我自己的非托管c++ dll。
因为我可以使用dllImport,即
[DllImport(@"D:myLibDebugmyLib.dll")]
static extern int add(IntPtr ptr);
它工作得很好,因为我在DllImport中提到了绝对路径。但是我的问题是,我想使用相对路径。
因为我需要在我的silverlight 5项目中添加非托管c++ dll并从那里指定路径。我已经调查了两天了,但没有找到解决这个问题的办法。
我只找到了下面提到的一个相关链接,但它也没有帮助。
http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.dllimportattribute.dllimportattribute.aspxAs它建议如何将非托管dll嵌入托管程序集。我尝试了这种方法,但我得到了"BadImageException"。
请建议解决这个问题,因为这对我来说真的很紧急。
谢谢,
一些
当Silverlight 5发布候选版本公开时,我创建了一些支持方法来处理将非托管的非系统DLL与Silverlight 5 RC应用程序捆绑在一起的问题。这个解决方案仍然有效,因为微软没有在Silverlight 5 RTM中添加任何支持来处理捆绑问题。
我所做的基本上是将非托管DLL捆绑为资源文件。通过手动调用助手方法,例如在应用程序启动事件处理程序中,将资源复制到磁盘上的预定义位置。在执行过程中,这个位置也包含在系统路径中。
提升信任是必需的(当然)。
关于这个解决方案的更多细节可以在这篇博客文章中找到。
与此解决方案相关的所有代码,包括示例测试,都可以在Github上找到。
正如Simon Mourier在下面的评论中指出的那样,一种选择也是在DLL从资源中解包后,通过调用Kernel32 LoadLibrary函数将非托管DLL加载到内存中(并在应用程序退出时释放)。这篇博文将详细描述Silverlight的这种方法。
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 如何在C++中从两个单独的for循环中添加两个数组
- POCO::PostgreSQL:如何将std::vector支持添加到`Binder::bind`
- 如何仅为一个函数添加延迟
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- 使用std::transform将一个范围的元素添加到另一个范围中
- 如何将更多文件夹添加到c++include路径
- 如何将元素添加到数组的线程安全函数?
- QT通过C++添加映射QML项目
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- 如何使用重载的相等(==)运算符向测试用例添加描述
- 为什么Mat类的两个对象可以在不重载运算符+的情况下添加
- 如何防止clang格式在流运算符调用之间添加换行符<<
- 只能向C++添加一定数量的字符
- Qt和C++:将QLineEdit添加到QTabWidget中
- 将QIcon添加到QTableView单元格
- 为什么我必须在C++中添加一个赋值符号来声明一个数组
- 为什么除非添加括号,否则构造函数上的模板替换会失败?
- 将图像添加到资源文件夹UWP C++
- 如何将非托管c++ dll添加到Silverlight 5项目中