我为我的项目创建了一个*.exe和*.dll。我提供了所有正确的路径和数据。Myexe.cpp
#include "stdafx.h"
#include <Windows.h>
int _tmain(int argc, _TCHAR* argv[])
{
HMODULE hInstLibrary = LoadLibrary(L("..\\Debug\\LoadDLL\\LoadDLL.dll"));// I have checked with complete path as well.
if(hInstLibrary)
{
printf("Hello World");
}
return 0;
}MyDLL.cpp
#include "MyDLL.h"
#include <stdio.h>
MyDLL::MyDLL(void)
{
}
MyDLL::~MyDLL(void)
{
}
extern "C" __declspec(dllexport) void HelloWorld()
{
printf("Hello DLL");
}MyDLL.h
#pragma once
class __declspec(dllexport) MyDLL
{
public:
MyDLL(void);
~MyDLL(void);
};
extern "C" __declspec(dllexport) void HelloWorld();我也尝试过提供complete path。但它仍在失败。hInstLibrary设置为0x00000。我也试过在Release mode,但问题仍然存在。但当我试着:
HMODULE hInstLibrary = LoadLibrary(_T("C:\\Windows\\System32\\aeinv.dll"));它确实加载了DLL。所以,请帮我看看哪里出了问题。DLL生成正确,在构建DLL时绝对没有错误。那我为什么要面对这个问题呢?
是否需要为Debug做任何设置。
发布于 2013-12-17 12:39:42
你需要打电话给GetLastError,找出出了什么问题。
编辑:
你得到了0x7e,这意味着:
ERROR_MOD_NOT_FOUND 126 (0x7E) 找不到指定的模块。
你的路错了。你得解决这个问题。
发布于 2013-12-17 12:51:53
用DependencyWalker检查您的可执行文件,并从那里查看它的概要文件。您将更好地了解为什么dll无法加载以及依赖树的外观。
当您开始分析(F7)时,请确保选中了“日志LoadLibrary函数调用”。
您还可以检查动态链接库搜索顺序,看看是否有任何东西适用于您的特定情况。
发布于 2013-12-17 12:55:00
L in L("..\\Debug\\LoadDLL\\LoadDLL.dll")是什么?您可能是指不带圆括号的宽字符字符串的L"..\\Debug\\LoadDLL\\LoadDLL.dll"。我不知道这是如何编译的,除非您创建了一个L宏?顺便说一下,_T(x)宏扩展到L ## x (在wide构建中).
https://stackoverflow.com/questions/20634296
复制相似问题