调用LoadLibrary project.dll失败。 指定的模块无法找到(LoadLibra

2019-07-30 16:40发布

当我试图用我的注册C ++ / ATL项目的32位版本

regsvr32 project.dll

我得到这个错误:

LoadLibrary("project.dll") failed - The specified module could not be found

project.dll是使用上的Visual Studio 10 ATL我的DLL建成。

64位版本注册的罚款。

我在想什么?

Answer 1:

我观察这个确切的同样的错误,但解决的办法是不安装可再发行。 所有依赖DLL存在任一项所述的系统1上的Depends.exe。

就我而言,KERNEL32.DLL的图标是微红色着色。 没了Depends.exe没有提供太多的解释,但周围挖透露,进口功能之一是从系统上的DLL失踪。 要查看导入的功能,请在树视图中相关的DLL和寻找正确的面板上的进口。 由PI栏才能看到失踪进口的红色图标。

在我的情况下,缺少的功能是没有我的悲伤目标操作系统中,Windows XP上存在的函数。 由于我的程序没有直接依赖于这个功能,我能够与脱身#define荷兰国际集团在我的项目如下:

#define WINVER 0x0501
#define _WIN32_WINNT 0x0501

与这些宏编译说得那么有问题的功能在头未声明,并在加载时不会因此进口。 现在,我能够使用regsvr32 。 这当然是一个非常特殊的(和幸运)的情况下。 我并不依赖于进口或任何其他更新的API,这样我就可以逃脱重定向项目。 如果不是一个系统DLL,我就需要找到一个新的版本,这很容易导致需要更新依赖图的整个子树。 或者更糟的是,如果我依赖于进口的缺失,将需要一些严重的重构。

概括起来,这个错误消息2可以由以下问题引起:

  1. 该DLL文件未找到或无法读取。 检查命令行。
  2. 有些依赖的DLL找不到或无法读取。
  3. 有些进口是从一些相关的DLL文件丢失。 如果这些系统DLL,你很可能针对Windows的版本错误。 如果这些非系统DLL文件,你需要安装它们的新版本和所有的依赖关系。

1:除了IESHIMS.DLL和WER.DLL这显然是在这个古老工具的错误。
2:还是真的,在加载特定系统的DLL的任何问题



Answer 2:

错误说明是误导在这种情况下。 系统找到你的DLL(project.dll),但你的DLL中的一个(或多个)的依赖性可能会丢失。



Answer 3:

我刚装

Microsoft Visual C++ 2010 Redistributable Package 

现在我可以安装DLL。

虽然这个工作,我不是太满意,这一点,因为我不想安装此包在客户端上,以便我的DLL通过他们的工作。



文章来源: LoadLibrary project.dll failed. The specified module could not be found
标签: dll atl regsvr32