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

先声明编写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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CSharp 调用C++ DLL; 参数为指针类型导出函数 c# Csharp调用 c++库 参数为导入和导出指针两种 包含C++ DLL源码 如fun(cont char* A,char*B) A为输入参数,B为输出参数-C# CSharp call C++ DLL lib dll function param use export and import eg: fun(cont char* A,char*B) A IN,B OUT TestDll\Debug\TestCallDll.exe .......\.....\TestCallDll.vshost.exe .......\.....\TestCallDll.vshost.exe.manifest .......\.....\TestDll.dll .......\.....\TestDll.lib .......\TestCallDll\Form1.cs .......\...........\Form1.Designer.cs .......\...........\Form1.resx .......\...........\obj\Debug\TestCallDll.csproj.FileListAbsolute.txt .......\...........\...\.....\TestCallDll.csproj.GenerateResource.Cache .......\...........\...\.....\TestCallDll.exe .......\...........\...\.....\TestCallDll.Form1.resources .......\...........\...\.....\TestCallDll.pdb .......\...........\...\.....\TestCallDll.Properties.Resources.resources .......\...........\Program.cs .......\...........\...perties\AssemblyInfo.cs .......\...........\..........\Resources.Designer.cs .......\...........\..........\Resources.resx .......\...........\..........\Settings.Designer.cs .......\...........\..........\Settings.settings .......\...........\TestCallDll.csproj .......\....Dll\dllmain.cpp .......\.......\ReadMe.txt .......\.......\stdafx.cpp .......\.......\stdafx.h .......\.......\targetver.h .......\.......\TestDll.cpp .......\.......\TestDll.def .......\.......\TestDll.h .......\.......\TestDll.vcproj .......\.......\TestDll.vcproj.PC-201008261742.Administrator.user .......\TestDll.sln .......\TestDll.suo .......\....CallDll\obj\Debug\TempPE .......\...........\...\Debug .......\...........\obj .......\...........\Properties .......\Debug .......\TestCallDll .......\TestDll TestDll

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值