C#在XP系统下调用C++ dll时报找不到指定模块

来源:互联网 发布:该域名升级访问中 编辑:程序博客网 时间:2024/05/18 03:03

先声明编写C++ dll的环境为:VS2013 + Win7旗舰版64位!生成的dll在本机调用时不存在问题,在同事Win7旗舰版32位调用也没有问题!但是在客户的电脑上调用时,报调用XXX.dll时找不到指定模块,提示如下:


此时如果点击Details查看详情的话,它会显示在你dll中的某个方法引起的!刚刚开始以为是函数方法名字没有找到!但是在其他Win7的电脑上又能正常运行!为了再次确保这个问题!使用了Dependency Walker软件进行了查看,发现了函数方法名字都已经完全正确的导了出来!而且又是放在C#程序的根目录,它还是提示找不到指定模块! 猜想是从Win7到XP上环境可能有所不同,应该是XP上缺少了什么库文件! 网上看Dependency Walker 程序还可以该库的依赖项有哪些!打开后发现提示如下:


根据上面的提示,Win7 32位系统上找到这三个文件放到C:\WINDOWS\system32的文件夹下面!发现还是报同样的错误!

搜索网上的答案的时候,多数提到要修改编译器的设置!而参照他们说的方法,发现还是不行!后面脑子一闪,好像编译器里面有个平台是可以选择是生成在XP环境运行的程序,记得那个好像是在编写MFC程序的时候,不太确定了!后来在项目属性页中找到了一项平台工具集的! 把其中的 Visual Studio 2013 (v120) 改为 Visual Studio 2013 - Windows XP (v120_xp) 重新编译下,拷贝到XP电脑上去试运行!发现可以了,其中的缘由还是不怎么清楚,望知道的大神能指点下! 设置如下:



有时C#在调用时有可能会出现试图加载不正确的格式的错误。我们对该.NET项目属性进行配置,右键该项目--属性--生成--目标平台修改为(x86)即可!

0 0
原创粉丝点击