朱朱你堕落了 发表于 2024-9-6 23:31

VS中新建项目的问题

如下图:
https://www.z4a.net/images/2024/09/06/dfd5d554d7658861d94f85a6a6daa85b.png

选的应用程序类似是DLL,添加公共头文件用于MFC(注:我都不知道这句话什么意思)
反正生成出来的并不是DllMain入口函数,怎么出来的类似于控制台main函数这种,怎么回事?
#include "stdafx.h"
#include "222.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// 唯一的应用程序对象

CWinApp theApp;

using namespace std;

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
        int nRetCode = 0;

        // 初始化 MFC 并在失败时显示错误
        if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
        {
                // TODO: 更改错误代码以符合您的需要
                _tprintf(_T("错误: MFC 初始化失败\n"));
                nRetCode = 1;
        }
        else
        {
                // TODO: 在此处为应用程序的行为编写代码。
        }

        return nRetCode;
}


这种的工程到底用到什么情况下?求大佬解惑。

苏紫方璇 发表于 2024-9-6 23:31

正确姿势是使用mfc dll,mfc会内部接管dllmain,不需要用户编写代码,只需要编写导出函数和在初始化函数中填写相应代码就可以。个人理解mfc主要是用于dll生成窗体,不需要的话,不用也行,CString这类好像可以直接包含头文件就能用

flyer_2001 发表于 2024-9-7 00:33

这个tmain没什么用,可以删除,或者可以用来做调用测试用例。
如果需要在DLL_PROCESS_ATTACH/DETACH…做处理,需要手动添加DllMain,如果不需要,也可以不用这个函数,也就是说DllMain不是必须的

lyrong2008 发表于 2024-9-7 12:19

选择mfc,能支持的API类型更多,比如弹出消息,可以用AfxMessageBox,文本类型可以用CSstring类型。

而win32 的DLL 就不支持这些类型了。

知道的不多,见笑了!

朱朱你堕落了 发表于 2024-9-9 09:50

lyrong2008 发表于 2024-9-7 12:19
选择mfc,能支持的API类型更多,比如弹出消息,可以用AfxMessageBox,文本类型可以用CSstring类型。

而w ...

那意思是我要把上面默认生成的删除掉,自己添加DllMain函数?

evea 发表于 2024-9-9 10:49

BOOL APIENTRY DllMain( HMODULE hModule,
                     DWORDul_reason_for_call,
                     LPVOID lpReserved
                     )
{
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
      break;
    }
    return TRUE;
}



这种吗?把mfc那个勾取消就好呀

yes2 发表于 2024-9-9 14:54

朱朱你堕落了 发表于 2024-9-9 09:50
那意思是我要把上面默认生成的删除掉,自己添加DllMain函数?

我感觉是的。我刚才试了一下,release编译的话main函数根本没有编译进去,直接被优化掉了,说明没有引用的地方。
正确的方式可能是选MFC向导而不是win32向导
页: [1]
查看完整版本: VS中新建项目的问题