只是为了补充乔Willcoxson的回答,请务必确认您使用的每一个MFC扩展DLL,需要一个特殊的初始化代码,类似于下面的例子:
#include "stdafx.h"
#include <afxdllx.h>
static AFX_EXTENSION_MODULE MyExtDLL = { NULL, NULL };
extern "C" int APIENTRY
DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
{
if (dwReason == DLL_PROCESS_ATTACH)
{
TRACE0("MyExt.DLL Initializing!\n");
// Extension DLL one-time initialization
if (!AfxInitExtensionModule(MyExtDLL, hInstance))
return 0;
new CDynLinkLibrary(MyExtDLL);
}
else if (dwReason == DLL_PROCESS_DETACH)
{
TRACE0("MyExt.DLL Terminating!\n");
// Terminate the library before destructors are called
AfxTermExtensionModule(MyExtDLL);
}
return 1; // ok
}
此代码只是照顾CDynLinkLibrary的创建,在MFC模块之间共享资源的关键。
如果这一切都设置正确 - 并且没有ID的冲突 - 那么它只是调用的马瑟:
CString;
s.LoadString(IDS_MY_STRING_ID);
在你的代码的任何地方,无论身在何处的字符串实际上仍然存在。
在link中可找到有关资源ID和编号的良好起点。
可能重复的[MFC LoadString in dll failed](http://stackoverflow.com/questions/1170533/mfc-loadstring-in-dll-fails) – wimh 2014-10-05 12:55:27
http://stackoverflow.com/questions/9062034/what -does-AFX-管理-stateafxgetstaticmodulestate-DO-准确 – 2014-10-05 13:50:21