在 C++ 中打开一个 dll(获取句柄)

Posted

技术标签:

【中文标题】在 C++ 中打开一个 dll(获取句柄)【英文标题】:Open a dll (get handle) in c++ 【发布时间】:2017-09-12 08:45:24 【问题描述】:

我正在寻找在 c++、visual studio 中加载 dll 库。

当我这样做时,我得到错误代码 193,这是: ERROR_BAD_EXE_FORMAT 193 (0xC1) %1 不是有效的 Win32 应用程序。

代码如下

using namespace std;

int main()

    HINSTANCE dllhandle = 
    LoadLibrary(L"C:\\LKG5000_DLL_ver1_10\\English\\64bit\\LKIF2.dll");
    cout << dllhandle << endl;

    if (dllhandle != 0)
    
        cout << "Created Handle" << endl;
    
    else
    
        cout << ":(" << endl;
    

    cout << GetLastError() << endl;
    getchar(); //Lazy way to keep cmd window open

    return 0;

有什么建议吗?谢谢

【问题讨论】:

查看 dll 的路径,看起来它是一个 64 位的 dll,但您的可执行文件可能是 32 位的。您的可执行文件也应该是 64 位的,因为 32 位应用程序无法加载 64 位 dll 【参考方案1】:

鉴于 DLL 路径,它看起来像是一个 64 位 (WIN64) DLL。

确保尝试加载该 DLL 的程序也针对 64 位目标进行了编译。 您无法在 32 位应用程序中加载 64 位 DLL 或其他方式。

阅读here了解更多详情。

【讨论】:

帮助很大 - 谢谢!

以上是关于在 C++ 中打开一个 dll(获取句柄)的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Win32 句柄在 C++ 中获取文件名? [复制]

C++中如何获取当前窗口句柄?

c#如何获取串口的句柄?

怎样在C++中取得WPF窗体的句柄

使用 user32.dll 获取特定窗口的句柄

delphi 获取自身句柄