3 c++ loadlibrary visual-studio-2010 visual-c++
我刚刚尝试了以下代码(windows xp sp3,vs2010),LoadLibrary似乎正在返回Null.
#include "windows.h"
#include "stdio.h"
int main() {
HMODULE hNtdll;
hNtdll = LoadLibrary(LPCWSTR("ntdll.dll"));
printf("%08x\n", hNtdll);
}
Run Code Online (Sandbox Code Playgroud)
我得到的输出是00000000.根据文档,函数失败时返回NULL.我尝试使用GetLastError,错误代码是126(0x7e,错误模态未找到).
我该如何纠正这个问题?
谢谢!
Rob*_*edy 12
你有一个字符串文字,由窄字符组成.你的LoadLibrary电话显然需要广泛的角色.类型转换不是从一个转换为另一个的方式.使用L前缀来获取宽字符串文字:
LoadLibrary(L"ntdll.dll")
Run Code Online (Sandbox Code Playgroud)
类型转换告诉编译器你char const*的确是一个wchar_t const*,这不是真的.编译器信任你并且LoadLibrary无论如何都将指针传递给你,但是当被解释为一个宽字符串时,你传递的东西是无意义的.它不代表系统上任何文件的名称,因此API会正确报告它找不到该模块.