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

Trouble loading DLL in C/C++

我在 Windows 控制台应用程序中加载 DLL 时遇到一些问题 我正在为 class project.I 编写代码 不知道为什么它不加载库文件。

在出现错误的地方调用 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()检查错误说找不到指定的模块。

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

我会使用 Process Monitor 之类的东西,它会向您展示程序在尝试加载 DLL 时正在做什么。

我也遇到过类似的情况,我遇到的情况是 Windows 没有在本地找到 DLL,因此它开始查找 众所周知的 [=16] =] 地点。其中之一是搜索 PATH,在我的实例中,PATH 包含一个无法访问的位置,这导致搜索停止并且 DLL 无法加载。

问题已通过在 Visual Studio 项目设置中将字符集从 "Unicode" 更改为 "No Set" 解决。

感谢大家的回答。

使用以下代码:

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

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