无法在C / C ++中加载DLL

时间:2016-05-09 17:59:24

标签: c++ c windows dll loadlibrary

我在Windows控制台应用程序中加载DLL时遇到了一些麻烦我正在编写类项目。我不知道它为什么不加载库文件。

在我调用LoadLibrary之前我遇到错误之前,我在main之前定义了这个:

#include "lomo2.h"

HINSTANCE cargaDLL;

此外,我已尝试将HINSTANCE更改为HMODULE类型,但它没用。

之后在main中我尝试导入位于main中的DLL:

cargaDLL =  LoadLibrary("C:\\lomo2.dll");
if (cargaDLL == NULL){
    PERROR ("Error en la carga de la libreria\n");
    Sleep(2000);
    exit (1);
}

当我调用LoadLibrary时,我也尝试使用像“LoadLibrary(。\ my dll directory \ lomo2.dll)”之类的相对路径,但它根本不起作用。

结果是在PERROR中链接库时出现错误的消息。

使用GetLastError()检查错误,表示无法找到指定的模块。

我希望你能帮助我解决这个问题。 Thnaks。

3 个答案:

答案 0 :(得分:0)

我会使用Process Monitor之类的东西来显示程序在尝试加载DLL时正在做什么。

我遇到了类似的情况,我发生的事情是Windows没有在本地找到DLL,所以它开始查看众所周知的位置。其中一个是搜索PATH,在我的实例中,PATH包含一个无法访问的位置,这导致搜索停止并且DLL无法加载。

答案 1 :(得分:0)

使用以下代码:

HMODULE cargaDLL;
cargaDLL =  LoadLibrary(L"C:\\lomo2.dll");

始终使用UNICODE作为项目的类型。 出于其他原因使用相对路径更好(使用" c:\ lomo.dll"将起作用)。 如果您与项目中的其他程序员协作,最好假设所有文件都放在一个文件夹中并使用该文件夹的相对路径。

答案 2 :(得分:-2)

通过更改" Unicode"中的字符集解决了这个问题。 to" No Set"在Visual Studio项目设置中。

感谢各位的回答。