首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LoadLibrary不起作用

LoadLibrary不起作用
EN

Stack Overflow用户
提问于 2013-12-17 12:35:32
回答 3查看 4K关注 0票数 1

我为我的项目创建了一个*.exe*.dll。我提供了所有正确的路径和数据。Myexe.cpp

代码语言:javascript
复制
#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

代码语言:javascript
复制
#include "MyDLL.h"
#include <stdio.h>

    MyDLL::MyDLL(void)
    {

}


MyDLL::~MyDLL(void)
{
}

extern "C" __declspec(dllexport) void HelloWorld()
{
    printf("Hello DLL");
}

MyDLL.h

代码语言:javascript
复制
#pragma once
class __declspec(dllexport) MyDLL
{
public:
    MyDLL(void);
    ~MyDLL(void);
};

extern "C" __declspec(dllexport) void HelloWorld();

我也尝试过提供complete path。但它仍在失败。hInstLibrary设置为0x00000。我也试过在Release mode,但问题仍然存在。但当我试着:

代码语言:javascript
复制
HMODULE hInstLibrary = LoadLibrary(_T("C:\\Windows\\System32\\aeinv.dll"));

它确实加载了DLL。所以,请帮我看看哪里出了问题。DLL生成正确,在构建DLL时绝对没有错误。那我为什么要面对这个问题呢?

是否需要为Debug做任何设置。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-12-17 12:39:42

你需要打电话给GetLastError,找出出了什么问题。

编辑:

你得到了0x7e,这意味着:

ERROR_MOD_NOT_FOUND 126 (0x7E) 找不到指定的模块。

你的路错了。你得解决这个问题。

票数 6
EN

Stack Overflow用户

发布于 2013-12-17 12:51:53

DependencyWalker检查您的可执行文件,并从那里查看它的概要文件。您将更好地了解为什么dll无法加载以及依赖树的外观。

当您开始分析(F7)时,请确保选中了“日志LoadLibrary函数调用”。

您还可以检查动态链接库搜索顺序,看看是否有任何东西适用于您的特定情况。

票数 3
EN

Stack Overflow用户

发布于 2013-12-17 12:55:00

L in L("..\\Debug\\LoadDLL\\LoadDLL.dll")是什么?您可能是指不带圆括号的宽字符字符串的L"..\\Debug\\LoadDLL\\LoadDLL.dll"。我不知道这是如何编译的,除非您创建了一个L宏?顺便说一下,_T(x)宏扩展到L ## x (在wide构建中).

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20634296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档