Tag: dllnotfoundexception

为什么我可以在Vista上找到DLL未找到的exception而不是XP?

我有一个依赖于几个托管库的应用程序。 这些托管库反过来依赖于一些非托管库。 当我将应用程序部署到运行XP的计算机时,它运行正常。 当我在运行Vista的机器上执行相同操作时,我得到一个未找到DLL的exception。 我已经尝试过VS2010安装项目和NSIS安装程序来进行部署,两种情况都是一样的。 为什么会这样? 我该怎么做才能绕过它? 更新 – 更多细节 两个安装程序都检查.NET 4.0的安装并在必要时安装它 Vista计算机是64位,但安装将按预期定向到x86程序文件文件夹 在这两种情况下我都有一个管理员帐户 DLL与可执行文件保存在同一目录中 据我所知,文件被复制到正确的目录 更新2 完整错误发生在http://pastebin.ca/2046487 DLL是Audiere.Net.dll,它是我的一个,是一个托管库。 我不确定该错误是否意味着它无法找到Audiere.Net.dll,或者它是否无法加载它,因为无法找到其中一个依赖项。 更新3 – 来自Process Monitor的资料 运行进程监视器后(感谢Mehrdad!),有几个条目没有“SUCCESS”状态。 其中一些是“NAME NOT FOUND”,有些是“未找到路径”。 (它甚至查询PDB文件,我原本认为它只是由调试器使用。)很难看出哪些条目可能是导致实际失败的条目。 无论如何,我已经上传了日志 (过滤了相关路径)以防万一对任何人都有意义。 更新4 – 添加.pdb文件 所以我有点绝望,并将.pdb文件包含在安装程序的输出中。 我认为它没用,但它实际上导致了更有用的错误。 我现在得到一个BadImageFormatException而不是简单地说找不到DLL。 谷歌搜索告诉我,这是在x86上编译的二进制文件的常见问题,但是在x64上运行(就像Vista机器一样)。 建议的补救措施是强制它以x86为目标,但Audiere.Net.dll已经是。 错误在于它包装的库吗?

DllImport生成System.DllNotFoundException

我在尝试从我的应用程序中使用非托管代码dll时遇到了一些困难(用C#framework 4.0编写)。 我正在使用dll导入如下 [DllImport(@”C:\MGW_SDK.dll”, EntryPoint = “fInicializaSDK”)] public static extern int fInicializaSDK(); 奇怪的是,从我的开发环境(Windows XP)调用时,它工作得很好,但是当在生产服务器(Windows7)上时,它会生成以下exception: System.DllNotFoundException :无法加载’ C:\MGW_SDK.dll’ :找不到指定的模块。 (来自HRESULT的exception:0x8007007E) Comtpaq.AdminPack.AdminPaqRepository.InitializeSDK()位于C:\Work\AgroIn\AdminPaqRepository.cs中的Comtpaq.AdminPack.AdminPaqRepository.InitializeSDK() :第30行 我已经运行了Dependency Walker ,它显示以下依赖项是冲突的: C:\windows\system32\SHLWAPI.DLL 我已经尝试将该dll复制到我的部署目录 MGW_SDK.dll在c:\ (如路径所示) 我已经安装了C运行时库 我还注意到一些有趣的东西:在例外情况下,开发路径显示C:\Work\AgroIn\AdminPaqRepository.cs:line 30 还有什么可能是这里的问题? 编辑 我用MGW_SDK.dll一个extern / dllimport方法构建了一个小型控制台应用程序并且运行它没有任何问题(没有任何DllNotFoundException ),所以这似乎与我正在构建的应用程序有关(a WCF服务)。 此服务托管在WAS上,但我仍然无法找到问题。

加载64位dll时,带有HRESULT 0x8007007E的DllNotFoundException

我下载了zlib并将该库编译为Windows 32位和Windows 64位dll。 我现在有zlibwapi.dll和zlibwapi64.dll 。 dll被复制到我的应用程序文件夹中,引用如下: [DllImport(@”zlibwapi.dll”, EntryPoint = “uncompress”, CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi, ExactSpelling = true, SetLastError = false)] private static extern int uncompress32( IntPtr dest, ref uint destLen, [In(), MarshalAs(UnmanagedType.LPArray)] byte[] source, uint sourceLen ); [DllImport(@”zlibwapi64.dll”, EntryPoint = “uncompress”, CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi, ExactSpelling = true, SetLastError = false)] […]

System.DllNotFoundException:无法在窗口2003上加载DLL

我在c#项目中使用c ++ dll,它在我的窗口xp机器上运行正常,但是当我在window 2003服务器(x64)上复制我的调试项目时,我收到下面的错误,任何人都可以告诉我这是什么问题,并且我该怎么办呢。 谢谢 “System.DllNotFoundException:无法加载DLL’lib.dll’:此应用程序无法启动,因为应用程序配置不正确。重新安装应用程序可能会解决此问题”

Mono SQLite上的System.DllNotFoundException

我最近一直试图解决这个问题。 它正在我的Windows机器上运行,我从NuGet获得了SQLite,但…… 当我将System.Data.SQLite.dll和SQLite.Interop.dll从我的Windows机器直接放入Linux服务器时,它说没有找到SQLite.Interop.dll ,但我确信我在下一个可执行文件中看到了它。 然后我尝试使用/p:UseInteropDll=false编译System.Data.SQLite.dll ,但没有运气。 这次它说没有找到System.Data.SQLite.dll 。 这个“未被发现”的谜团是什么?

Windows Vista:无法加载DLL“x.dll”:对内存位置的无效访问。 (DllNotFoundException)

我今天下午正在客户的盒子上测试它有Windows Vista(他有家,但我正在测试商业版,结果相同)。 我们使用.DLL获取计算机的硬件ID。 它的用法很简单,我创建的示例程序也很有效。 这是来自AzSdk的Dll。 事实上,这在Windows XP下完美运行。 但是,由于一些奇怪的原因,在我们的项目中(方式更大),我们得到了这个例外: Exception Type: System.DllNotFoundException Exception Message: Unable to load DLL ‘HardwareID.dll’: Invalid access to memory location. (Exception from HRESULT: 0x800703E6) Exception Target Site: GetHardwareID 我不知道是什么导致了这个问题,因为我可以完全控制文件夹。 该项目是ac#.net Windows窗体应用程序,除了调用外部库外,一切正常。 我这样声明:(注意:它不是 COM库,也不需要注册)。 [DllImport(“HardwareID.dll”)] public static extern String GetHardwareID(bool HDD, bool NIC, bool CPU, bool BIOS, string sRegistrationCode); 然后调用代码非常简单: private void button1_Click(object […]

DllNotFoundException,但DLL就在那里

所以我使用SDK作为硬件随机数生成器,它提供了一个名为PsyREG.dll的dll用于与之交互,以及一些使用dll方法的c#源代码。 它过去曾奏效,但不知怎的,它已停止运作。 我的手有点束缚,因为我现在实际上无法访问有问题的设备,所以我不能尝试很多东西…… 然而,这是奇怪的事情。 dll在那里,它始终是同一个地方。 事实上,File.Exists(“PsyREG.dll”)返回true,我已经双重检查,这与提供的c#source导入它的方式完全相同,例如[DllImport(“PsyREG.dll”)]。 有任何想法吗?

为什么.NET没有找到OpenSSL.NET DLL?

编辑 (整个问题,它太不清楚了) 我想使用OpenSSL.NET OpenSSL.NET安装说明页面: INSTALL 确保在应用程序的当前工作目录或PATH中有libeay32.dll和ssleay32.dll。 DONE 在.NET项目中,添加对ManagedOpenSsl.dll程序集的引用。 DONE 我已将libeay32.dll和ssleay32.dll放在我的bin/Debug和bin/Release目录中。 我也把它们放在system32 。 这是我的完整代码: using System; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { try { OpenSSL.Crypto.RSA rsa = new OpenSSL.Crypto.RSA(); } catch (Exception e) { Console.WriteLine(e.InnerException.Message); } Console.Read(); } } } 我收到以下错误: 无法加载DLL’libeay32’http://sofzh.miximages.com/c%23/Error.gif (无法加载DLL’libeay32’) 这是Process Monitor日志(根据要求): alt text http://sofzh.miximages.com/c%23/ProcMon.gif 我究竟做错了什么? 为什么找不到DLL?