BOOL WINAPI DllMain(HMODULE hModule, DWORD dwReason, PVOID pvReserved)
{
if (dwReason == DLL_PROCESS_ATTACH)
{
DisableThreadLibraryCalls(hModule);
}
else if (dwReason == DLL_PROCESS_DETACH)
{
} return TRUE;
}
在“MyDll.Cpp”里面添加如上代码会提示:
错误 1 error LNK2005: _DllMain@12 已经在 cs20.obj 中定义 mfcs80ud.lib
错误 2 fatal error LNK1169: 找到一个或多个多重定义的符号
别告诉我删掉这一行啊,我需要这DLLMain启动函数,要启动的函数我还没写。但是现在就重定义了,哭。0.0
{
if (dwReason == DLL_PROCESS_ATTACH)
{
DisableThreadLibraryCalls(hModule);
}
else if (dwReason == DLL_PROCESS_DETACH)
{
} return TRUE;
}
在“MyDll.Cpp”里面添加如上代码会提示:
错误 1 error LNK2005: _DllMain@12 已经在 cs20.obj 中定义 mfcs80ud.lib
错误 2 fatal error LNK1169: 找到一个或多个多重定义的符号
别告诉我删掉这一行啊,我需要这DLLMain启动函数,要启动的函数我还没写。但是现在就重定义了,哭。0.0
项目类型 选择dll,空白项目
把你代码加进去, 加个include <windows.h>通过编译了。
你新建项目时候选择dll项目了么?不要用默认的win32项目。
一样当资源添加上。然后DialogBox(hModule,对话框id);
hModule句柄指向哪个进程,就从哪个进程加载资源。
所以你要用DLL里的对话框 就用DLLMAIN的hModule,
如果用外边的对话框,就把句柄传进来加载。
类似的问题
http://topic.csdn.net/u/20071207/17/52e50696-e85a-4305-a5ea-3f774131afcb.html
看看这个
解决办法就是建立win32的dll项目,再写上面的代码,如果需要,可以增加MFC支持。
另外办法就是自定义dll入口,比如将函数改名,然后在项目的链接设置里面设置入口点为myDllMain
(注意,此种情况下,crt还没有初始化,很多功能都需要自己细心处理,对于无经验的人,可能是个灾难)
BOOL WINAPI myDllMain(HMODULE hModule, DWORD dwReason, PVOID pvReserved)
{
...
return TRUE;
}
其实就是叫你把Dllmodul.cpp复制到你的工程。
class AFX_EXT_CLASS A{
};3. 正常创建对话框,对话框类如果不在外部使用就不加 AFX_EXT_CLASS。4. 编译时找不到对话框ID会出一个错误,手工#define一个对话框ID
项目属性 -> 配置属性 -> c++ -> 预处理器
删除_USRDLL即可