我对此代码有疑问:
int
WINAPI
Getdesc(IN WORD wcode,
OUT LPWSTR lpBuf)
{
WCHAR szDescription[256];
int res = LoadStringW(NULL,wcode,szDescription,256);
if(res == 0)
{
wcscpy(lpBuf, L"Undefined");
return 0;
}
else
{
wcscpy(lpBuf,szDescription);
return 0;
}
}
该函数放在DLL中,当我访问它时,它总是返回“Undefined”, 我认为我的LoadString调用存在问题,但我无法弄明白。 我是Windows编程的新手,任何帮助都将不胜感激
答案 0 :(得分:4)
问题是您将NULL
作为HINSTANCE
参数传递。这意味着您在可执行主机而不是DLL中查找资源。您必须传递DLL的模块句柄。作为传递给DllMain
函数的第一个参数,您将获得该实例句柄。
如果您正在使用MSVC进行编译,那么您可以使用__ImageBase
来获取模块句柄。就个人而言,我建议记下传递给DllMain
的值是一种更清晰的方法。它避免了对一个特定编译器的依赖。
另请注意,如果GetLastError
无法获取有关错误原因的详细信息,则可以调用LoadString
。这很可能会帮助你识别错误。