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

解决方案 »

  1.   

    新建win32项目
    项目类型 选择dll,空白项目
    把你代码加进去, 加个include <windows.h>通过编译了。
    你新建项目时候选择dll项目了么?不要用默认的win32项目。
      

  2.   

    额,忘了说了Win32DLL我试过,确实能行,但是我要在DLL里添加对话框怎么办啊?
      

  3.   

    http://blog.csdn.net/oicq2008/archive/2009/03/18/4002432.aspx
      

  4.   


    一样当资源添加上。然后DialogBox(hModule,对话框id);
    hModule句柄指向哪个进程,就从哪个进程加载资源。
    所以你要用DLL里的对话框 就用DLLMAIN的hModule, 
    如果用外边的对话框,就把句柄传进来加载。
      

  5.   

    额,在Win32创建对话框要好多东西,有简单点的吗?
      

  6.   

    http://topic.csdn.net/u/20071207/17/52e50696-e85a-4305-a5ea-3f774131afcb.html
    类似的问题
      

  7.   


    http://topic.csdn.net/u/20071207/17/52e50696-e85a-4305-a5ea-3f774131afcb.html
    看看这个
      

  8.   

    你这是MFC的dll项目, dllMain已经定义了,所以你这里不能再定义了。
    解决办法就是建立win32的dll项目,再写上面的代码,如果需要,可以增加MFC支持。
    另外办法就是自定义dll入口,比如将函数改名,然后在项目的链接设置里面设置入口点为myDllMain
    (注意,此种情况下,crt还没有初始化,很多功能都需要自己细心处理,对于无经验的人,可能是个灾难)
    BOOL WINAPI myDllMain(HMODULE hModule, DWORD dwReason, PVOID pvReserved)
    {
     ...
        return TRUE;
    }
      

  9.   

    帮助中有一篇:“How to Provide Your Own DllMain in an MFC Regular DLL”
      

  10.   

    To add code to MFC's DllMain, copy the \Msdev\Mfc\Src\Dllmodul.cpp source file to your project directory, and include the copy in your project. This copy of Dllmodul.cpp will be compiled and linked into your DLL instead of the Dllmodul.cpp in the Mfc\Src directory, so changes to the DllMain in it will show up in the final DLL. 
    其实就是叫你把Dllmodul.cpp复制到你的工程。 
      

  11.   

    这种对MFC依赖又想用窗口的DLL最好使用 MFC 扩展 DLL.1. 在你的Solution里面添加一个MFC 扩展 DLL 项目。2. 像普通项目一样给这个DLL项目添加类。加上AFX_EXT_CLASS,这样导出的类在别的项目中就正常使用。
    class AFX_EXT_CLASS A{
    };3. 正常创建对话框,对话框类如果不在外部使用就不加 AFX_EXT_CLASS。4. 编译时找不到对话框ID会出一个错误,手工#define一个对话框ID
      

  12.   

    如果你想编译过,我教你,非常简单只要在
    项目属性 -> 配置属性 -> c++ -> 预处理器
    删除_USRDLL即可