无法在 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" 会起作用)。
如果您与其他程序员合作完成一个项目,最好假设所有文件都放在一个文件夹中并使用该文件夹的相对路径。
我在 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" 会起作用)。 如果您与其他程序员合作完成一个项目,最好假设所有文件都放在一个文件夹中并使用该文件夹的相对路径。