“无法找到指定的过程”错误与.NET 4
我正在使用Visual Studio 2012(11.0.51106.01 Update 1)在64位
Windows 7盒子上进行开发.
我有一个支持项目,将一些C代码编译成(32位)DLL.在我的标题中,我有: #define RET_TYPE(type) _declspec(dllexport) type __stdcall RET_TYPE(int) test_dll_call(int invar); 在我的C文件中,我有: RET_TYPE(int) test_dll_call(int invar) { int retVal = 4 * invar; return retVal; } 我还有一个(32位)WPF C#应用程序,它将DLL加载到类中,如下所示: [DllImport("MyDll.dll",CharSet = CharSet.Ansi,BestFitMapping = true,ThrowOnUnmappableChar = true)] public static extern int test_dll_call(int invar); 包装如下: public void Wrap_TestDllCall() { try { int outTest = 0; int invar = 3; outTest = test_dll_call(invar); } catch (Exception ex) { dllError = ex.ToString(); } } 当我在我的开发框中的调试器中运行它时,这很好.如果我将所有相关文件复制到一个单独的文件夹并从那里运行它,它工作正常. 如果我将所有必要的文件夹复制到另一台运行32位Windows XP SP3的计算机上,我会收到以下错误: System.DllNotFoundException: Unable to load DLL 'MyDll.dll': The specified procedure could not be found. (Exception from HRESULT: 0x8007007F) at MyNamespace.MyClass.test_dll_call(Int32 invar) at MyNamespace.MyClass.Wrap_TestDllCall() 我在编译的exe和dll上都使用了依赖walker;它发现的唯一缺失的dll是wer.dll和ieshims.dll,我的研究中不需要XP. 我已经安装了VS2012 C Redistributable,.NET 4和.NET 4.0.3更新.仍然没有运气. 编辑正如汉斯所指出的,这似乎是应用程序无法在DLL中找到程序;我也尝试过: [DllImport("MyDll.dll",CallingConvention=CallingConvention.Cdecl)] public static extern int test_dll_call(int invar); 和 __declspec(dllexport) int __cdecl test_dll_call(int invar); 哪个也适用于我的开发盒,但在WinXP盒上给出了相同的错误. 救命! 解决方法
问题解决了.对于那些在将来遇到这种情况的人来说,在我进行故障排除步骤时需要注意的一些事项.
>这个错误并不一定意味着它找不到程序X – 而是它可能意味着它无法从另一个由X调用的dll中找到函数Y. 在我上面的测试示例中,问题是我正在编译为Debug版本. 但是,在我的完整功能中,该更改并未解决问题.事实证明我错过了依赖沃克没有抓到的一些DLL. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 记录一次在windows上安装hadoop
- windows-7 – 为什么我的log4net日志条目不会出现在Windows
- 在Windows 7的Git Bash中,运行黄瓜或rspec时,颜色显示为代码
- Windows中socket和HANDLE有什么区别?
- 【SoloPi】SoloPi使用1-初次使用,环境准备(Windows版)
- windows-server-2008 – GPO中计算机配置和用户配置的区别
- 为什么从Windows和Mac构建时,android apk的大小不一样
- winapi – 从进程ID获取进程名称(win32)
- 通过cmd 使用 InstallUtil.exe 命令 操作 windows服务 Wind
- “Windows错误:提供程序DLL无法正确初始化”导入冻结的wxp