加载DLL基地HMODULE的QT问题

时间:2014-07-24 08:10:54

标签: c++ qt dll

我想加载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 个答案:

答案 0 :(得分:0)

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

  1. 定义_UNICODE。这是应用程序范围的,因此它可能会对您的应用程序中的字符串产生其他影响。
  2. 而不是LoadLibraryW(),调用LoadLibrary(),如果没有定义_UNICODE,它将在幕后调用LoadLibraryA()。
  3. 不使用_T(“my string”),而是使用L“my string”强制使用宽字符。
  4. 所有这些都是explained in some detail over at MSDN