Win7DllImportC#奇怪的错误,无法访问内存位置?我正在使用DllImport从我的C#应用程序访问C++DLL中的某些函数。这段代码在我的开发笔记本电脑上运行良好,它是Windows764位,dll本身是32位,所以我在32位运行主机dll进程并且它运行良好。但是,当我尝试在我的目标计算机(Windows764位旗舰版)上运行完全相同的进程时,我收到错误“对内存位置的访问无效”。从过程中。我不确定问题出在哪里,我在网上查看了大量资源,但没有一个能为我解决问题。我不明白为什么它在我的开发箱上工作正常但在目标上却不行?dll本身很好,dll附带的示例都可以在我的目标框上运行(它是一个执行DllImport的C#应用程序)。有没有其他人有这个问题?现在已经两天了!Exception:{"UnabletoloadDLL'CLEyeMulticam.dll':Invalidaccesstomemorylocation.(ExceptionfromHRESULT:0x800703E6)"}DLLloadingmaycrashduetounresolveddependencies,souseDependencyWalkeronthetargetmachine打开你的DLL和看看有没有问题。我注意到您的开发机器和目标机器、开发环境之间存在很大差异。确保您在目标计算机上拥有所有必需的可再发行组件。编辑:当一些dll被编译到不同版本的.Net框架或者它们是用不同版本的VisualStudio制作时,我看到了类似的问题,因为每个版本的可再发行组件都不同,并且最新的可再发行组件不完全向后兼容.我在这里有同样的问题本机加载工作正常。从.net加载时出错无法加载DLL“my.dll”:对内存位置的访问无效问题出在DEP函数上。当我仅为基本程序打开DEP时,它没有任何效果。但是当我完全关闭DEP并重新启动我的服务器时,错误就消失了。我做的另一件事-安装了.net4.0的最新更新值得注意的一件事-我没有看到任何关于DEP的错误,只是“内存”错误。我以前遇到过这个问题。我认为你的问题是VS试图打开文件但没有读取它的权限。您需要确保您使用的帐户可以访问DLL。尝试禁用UAC以查看是否有效,或使用管理员帐户。或者尝试将DLL的完全控制权授予所有人。编辑:您可以以管理员身份运行VS(右键单击->以管理员身份运行)吗?你能把这个DLL放到你的桌面上试试吗?您的工作计算机和故障计算机之间的文件夹结构是否存在差异?另外,如果在VS之外执行DLL(尝试以管理员身份运行),DLL是否运行良好?HTH我之前遇到过类似的问题,请尝试以下操作。我在尝试加载32位本机DLL依赖项时遇到了64位.NET应用程序(“任何CPU”)的问题。我面前没有错误信息,所以我不能告诉你是不是同样的问题。我的问题的解决方案是将我的构建更改为仅x86。如果DLL的位大小在每个框上发生变化,则可能存在结构大小差异,因此您的PInvoke签名变得不正确。这很容易导致缓冲区溢出并导致本机代码中的堆栈损坏。如果您在C#应用程序中遇到错误,此消息通常意味着本机代码正在对ILM可以看到的内存做一些令人讨厌的事情-检查DllMain例程中/调用的代码-在您的调用实际通过调用之前-如果它行为不端你会看到这个结果@MerlynMorgan-Graham我们遇到了类似的问题。我们使用“任何CPU”构建构建一个.Net应用程序,并尝试使用32位C++Dll。当我们在64位操作系统中运行.Net应用程序时。它作为64位可执行文件运行,因此会遇到类似的问题。X86加载后,对C++Dll的调用就可以了。如果您在.Net代码中使用C++DLL,则更是如此。会有相当多的编组,因此坚持构建类型(即X86、任何CPU或X64)很重要。请检查以下链接:WindowsVista:无法加载DLL“x.dll”:对内存位置的访问无效。(DllNotFoundException)明显但可能很蹩脚的解决方案是为32位显式构建C#端。检查proc主机的创建方式-以编程方式或通过填充注册表项或......可能在其他一些框中设置为创建64位主机进程或尝试进程内调用,这意味着加载......它是一个注册表设置不要忘记,对于混合的23/64位情况,我有两个分支。我换win7的时候遇到了类似的问题。您可能需要使用以下命令将您的(64位)计算机设置为默认运行32位:C:\WINDOWS\Microsoft.NETFramework64v2.0.50727Ldr64.exesetwow参考:http://social.msdn.microsoft。com/forums/en/phoenix/thread/9a43e9a1-a744-4a1a-bb34-3604254c126b以上是C#学习教程:Win7DllImportC#奇怪的错误,无法访问内存位置?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
