繁体   English   中英

如何从不同进程的资源中加载字符串?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM