加载 dll 基地址 HMODULE 的 QT 问题

Posted

技术标签:

【中文标题】加载 dll 基地址 HMODULE 的 QT 问题【英文标题】:QT issue with loading dll base address HMODULE 【发布时间】:2014-07-24 08:10:53 【问题描述】:

我想加载如下代码所示的dll基地址。

HMODULE g_hDll; 
g_hDll = LoadLibraryW(_T(“4FM.dll”));`

当我运行它时,我收到以下错误消息:

 C:\Qt\UPI_ProIII_062414085021\fpga_lib\sipif.cpp:106: error: C2664: ‘HMODULE LoadLibraryW(LPCWSTR)’ : cannot convert argument 1 from ‘const char [8]’ to ‘LPCWSTR’
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast

我也尝试了Qlibrary,但我无法在hmodule 上加载。

当我使用 Visual Studio 2010 运行相同的代码时,它运行良好。

【问题讨论】:

【参考方案1】:

_T() 表示 Win32 上的多字节或宽字符串,具体取决于 _UNICODE 是否为#defined。在你的情况下,它一定不是。所以你有几个选择:

    定义_UNICODE。这是应用程序范围内的,因此它可能会对应用程序中的字符串产生其他影响。 调用 LoadLibrary() 而不是 LoadLibraryW(),如果未定义 _UNICODE,最终将在后台调用 LoadLibraryA()。 不要使用 _T("my string"),而是使用 L"my string" 来强制使用宽字符。

所有这些都是explained in some detail over at MSDN。

【讨论】:

以上是关于加载 dll 基地址 HMODULE 的 QT 问题的主要内容,如果未能解决你的问题,请参考以下文章

C#怎么调用C++的dll?

读取 EXE 或 DLL 的清单而不加载它

解决QT出现XXXX.dll不能加载问题

缺少 dll 功能检测

qt加载dll

QT 中的延迟 DLL 加载