我需要在Silverlight 5项目中使用我自己的非托管C dll.
因为我能够使用dllImport使用它,即
[DllImport(@"D:\myLib\Debug\myLib.dll")] static extern int add(IntPtr ptr);
它工作正常,因为我在DllImport中提到了一个绝对的路径.但我的问题是,我想使用相对路径.
因为我需要在我的silverlight 5项目中添加非托管C dll并从那里指定路径.
我正在调查过去两天我没有找到任何解决这个问题的方法.
因为它建议如何将您的非托管DLL嵌入到托管程序集中.
我试过这种方法,但我得到“BadImageException”.
请建议过来解决这个问题,因为这对我来说非常紧迫.
谢谢,
VIPIN
解决方法
当Silverlight 5 Release Candidate公开时,我创建了一些支持方法来处理将非托管非系统DLL与您的Silverlight 5 RC应用程序捆绑在一起的问题.该解决方案仍然有效,因为Microsoft没有添加任何支持来处理Silverlight 5 RTM中的捆绑问题.
我所做的基本上是将非托管DLL捆绑为资源文件.通过手动调用的辅助方法,例如,在应用程序启动事件处理程序中,资源被复制到磁盘上的预定义位置.然后,该位置在执行期间也包含在系统PATH中.
需要提升信任(当然).
与此解决方案相关的所有代码(包括样本测试)均可在Github上找到.
UPDATE
正如Simon Mourier在下面的评论中指出的那样,一个选项也可以是在从资源中解压缩DLL之后通过调用Kernel32 LoadLibrary函数来加载到内存中(并在应用程序退出时释放)非托管DLL.在this博客文章中更详细地描述了Silverlight的这种方法.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。