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;
}
这种的工程到底用到什么情况下?求大佬解惑。 正确姿势是使用mfc dll,mfc会内部接管dllmain,不需要用户编写代码,只需要编写导出函数和在初始化函数中填写相应代码就可以。个人理解mfc主要是用于dll生成窗体,不需要的话,不用也行,CString这类好像可以直接包含头文件就能用 这个tmain没什么用,可以删除,或者可以用来做调用测试用例。
如果需要在DLL_PROCESS_ATTACH/DETACH…做处理,需要手动添加DllMain,如果不需要,也可以不用这个函数,也就是说DllMain不是必须的 选择mfc,能支持的API类型更多,比如弹出消息,可以用AfxMessageBox,文本类型可以用CSstring类型。
而win32 的DLL 就不支持这些类型了。
知道的不多,见笑了! lyrong2008 发表于 2024-9-7 12:19
选择mfc,能支持的API类型更多,比如弹出消息,可以用AfxMessageBox,文本类型可以用CSstring类型。
而w ...
那意思是我要把上面默认生成的删除掉,自己添加DllMain函数? 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那个勾取消就好呀 朱朱你堕落了 发表于 2024-9-9 09:50
那意思是我要把上面默认生成的删除掉,自己添加DllMain函数?
我感觉是的。我刚才试了一下,release编译的话main函数根本没有编译进去,直接被优化掉了,说明没有引用的地方。
正确的方式可能是选MFC向导而不是win32向导
页:
[1]