C# 调用第三方dll失败问题

转载:https://bbs.csdn.net/topics/392272183?page=1

以下内容摘自原作者,我的一个dll也出现初始化失败的问题,用第7步,以管理员身份运行,发现没有问题。在此感谢原作者,也做个记录。

目前问题已经解决,我说说我所做的工作,方便以后遇到类似问题的朋友解决。
开始的时候,发现调用不了WOSA的msxfs.dll动态库。提示信息:
System.DllNotFoundException
  HResult=-2146233052
  Message=无法加载 DLL“msxfs.dll”: 动态链接库(DLL)初始化例程失败。 (异常来自 HRESULT:0x8007045A)
我做过的尝试有


1.检查在当前工程的运行目录下是否“msxfs.dll”这个库,发现有。其次检查了system32下也有这个库。
2.检查当前工程的目标框架是否是“msxfs.dll”支持的net4.0和x86环境。检查是否安装了XFSManager。发现都是正确的。
3.检查系统环境变量路径里面是否包含了这个动态库。发现也有。
4.查询网上的资料,发现有的动态库有其依赖运行库,怎么查看依赖运行库?用depends工具查看即可,发现缺少很多库,但是同样在其他人那里可以运行用depends查看依然缺少很多库。那么说明这些库不是产生问题的原因。
5.猜想可能是这个库本身有问题,自己动手用VS2010写了一个C++的动态库,新建一个C#的WPF工程来调用刚刚写的动态库,发现可以调用,认为开发环境没有问题(其实这个猜想不合理,因为在别人机器上可以跑起来,说明库里的函数是可以正常调用的。)
6.用虚拟机装了一个win7 64位的系统,再安装VS2010及其补丁包SP1,发现还是不行
7.最后返回来直接运行工程的.exe程序,发现运行不了,于是用管理员权限运行,发现程序居然没有问题,可以调用设备,说明那个函数库也能被调用,到此就说明了肯定是编译环境有问题,于是尝试用管理员权限运行VS2010,运行居然不在报错:找不到“msxfs.dll”。
猜测原因可能是,管理员有对某些保护数据访问权限,而这些数据和需要查找的动态库有关,所以以后尽量还是以管理员权限来运行程序,省去很多麻烦。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值