【问题标题】:C++ LoadLibrary Returns NullC++ LoadLibrary 返回 Null
【发布时间】:2015-12-28 21:33:37
【问题描述】:

我正在尝试加载一个名为“MathLib.dll”的简单 DLL 进行测试。 DLL 的路径是D:\Desktop\MathLib\MathLib.dll。在此代码中,dll 始终为 null,并打印“加载失败”。

#include "stdafx.h"
#include <Windows.h>
#include <iostream>

int main()
{
    HINSTANCE dll = LoadLibrary(L"D:\Desktop\MathLib\MathLib.dll");
    if (dll == NULL) {
        std::cout << "Failed to load";
    }
    else {
        std::cout << "Loaded!";
    }
    std::cin.get();
    return 0;
}

我认为问题出在路径上,但我不知道我可以做些什么不同的事情。

【问题讨论】:

  • 您需要在字符串文字D:\\Desktop\\MathLib\\MathLib.dll 中转义反斜杠,或使用原始字符串文字
  • 在 Window 上处理路径时最好将反斜杠替换为正斜杠。这样它也会自动转义空格,字符串会更清晰。

标签: c++ dll


【解决方案1】:

除了 Praetorian 的评论和 Mike 关于加倍反斜杠的回答之外,您还必须确保您加载的 dll 与您的代码兼容(即,如果您在 x64 中编译,则库必须是 x64)。

我建议你使用GetLastError()error code 会告诉你去哪里看。

【讨论】:

    【解决方案2】:

    我的直接想法......这很可能是错误的......你应该在你的字符串常量中加倍那些反斜杠,以便它们将被解释为“字面上,反斜杠, 而不是像“\n”这样的转义序列。

    我的直觉是 LoadLibrary 没有收到您认为的字符串!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-06
      • 2017-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-07
      • 1970-01-01
      相关资源
      最近更新 更多