[英]How to load a string from the resource of a different process?
我需要加载一个字符串,该字符串放在另一个进程的资源dll中,条件是该进程将在调用时运行。
我尝试了以下代码-
HMODULE hRes = ::LoadLibrary(_T("SomeResource.dll"));
TCHAR buffer[50];
::LoadString(hRes, IDS_SOME_ID, buffer, 50);
在调试模式下运行时,此代码可以正常工作。 但是在释放模式下,LoadLibrary返回零。 为什么?
我想念什么吗? 请帮我。
我正在使用VC7.1编译器。
查找 "SomeResource.dll"
可能是一个问题。 从调试器运行时,可执行文件从项目路径启动。 如果可以从那里找到DLL。 没关系。 当您从IDE外部运行时,可执行文件将从其他文件夹启动。 可能是无法从那里找到DLL。
我没有假装回答,但是可以添加以下代码来诊断问题:
if( hRes == 0 ){
LPVOID lpMsgBuf;
DWORD dw = GetLastError();
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM,
NULL,
dw,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR) &lpMsgBuf,
0, NULL );
MessageBox(NULL, (LPTSTR)lpMsgBuf, "Error", MB_OK);
LocalFree(lpMsgBuf);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.