在 Win32 Application 和 Win32 Console Application 中使用 MFC

笔记本运行openssl密码库求运行时间遇到的问题 win10+openssl+vs2017教程: 教程1 教程2 项目场景1: 输入指令:> perl Configure VC-WIN64A -prefix=D:\openssl111 问题描述: Can't locate Win32/Console.pm in @INC (you may need to install the Win32::Console module) (@INC contains: D:/OpenSSL111/openssl-1.1.1/util/perl D:/Perl64/ 阅读详情
 在 Win32 Application 和 Win32 Console Application 中使用 MFC
  在Virtual C++ 6.0创建的Win32 Application 和 Win32 Console Application 中使用 MFC 是可能的,主要的困难在于绕过MFC提供的WinMain函数。下面我提供一个方法以供参考:
  进入 Project-->Setting--> C/C++ Page,做以下修改:
  1. 在Preprocessor definitions中加入_AFXDLL,加入后的设置大概是这样的:
  WIN32,_DEBUG / NODEBUG,[_CONSOLE],[_MBCS],_AFXDLL
  加入的_AFXDLL是关键 ,它欺骗MFC LIB,避免连接 MFC 的 WinMain 函数。
  2. 修改Project Options,将 /MT或者 /ML标志改为 /MD。
  原因是在 afxver_.h 中会检查_AFXDL, _MT, _DLL 标志是否同时设置,否则报错。尽管链接 For Multi-Threaded 版本的 Library 会损失一些性能,但是这个标志的存在并不导致编译器把 Project 编译成 DLL。
  3. 在Project的 stdafx.h 中包含必要的头文件,或者直接从MFC AppWizard创建的stdafx.h中拷贝:
  #define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers
  
  #include <afx.h>
  #include <afxwin.h> // MFC core and standard components
  #include <afxext.h> // MFC extensions
  #include <afxdtctl.h> // MFC support for Internet Explorer 4 Common Controls
  #ifndef _AFX_NO_AFXCMN_SUPPORT
  #include <afxcmn.h> // MFC support for Windows Common Controls
  #endif // _AFX_NO_AFXCMN_SUPPORT
  4. 在Project的WinMain / main中加入MFC的初始化代码,以下是_tWinMain和_tmain的情况:
  extern "C" int WINAPI
  _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
   LPTSTR lpCmdLine, int nCmdShow)
  {
   int nRetCode = 0;
   if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
   {
   TRACE0("Fatal Error: MFC initialization failed./n");
   nRetCode = 1;
   }
   else
   {
   // Actual WinMain codes ...
   AfxWinTerm();
   }
   return nRetCode;
  }
  int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
  {
   int nRetCode = 0;
   if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
   {
   cerr << _T("Fatal Error: MFC initialization failed") << endl;
   nRetCode = 1;
   }
   else
   {
   // Actual main codes ...
   AfxWinTerm();
   }
   return nRetCode;
  }
  此外,在Virtual C++ 6.0创建的Win32 Dynamic-Link Library中也可以单独使用MFC,这样可以避免Project被MFC AppWizard和ATL COM AppWizard添加CWinApp实例,方法简单,如下构造Project的DllMain函数即可:
  #include <afxdllx.h>
  static AFX_EXTENSION_MODULE ProjectDLL = { NULL, NULL };
  extern "C" int APIENTRY
  DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
  {
   // Remove this if you use lpReserved.
   UNREFERENCED_PARAMETER(lpReserved);
   if (dwReason == DLL_PROCESS_ATTACH)
   {
   // Extension DLL one-time initialization.
   if (!AfxInitExtensionModule(ProjectDLL, hInstance))
   {
   TRACE0("Project.DLL initialize its extension module failed!/n");
   return FALSE;
   }
  
   // CDynLinkLibrary’s destructor will be called in AfxTermExtensionModule.
   new CDynLinkLibrary(ProjectDLL);
   }
   else if (dwReason == DLL_PROCESS_DETACH)
   {
   TRACE0("Project.DLL terminating.../n");
   // Terminate the library before destructors are called.
   AfxTermExtensionModule(ProjectDLL);
   }
   return TRUE; // ok.
  }
MFC DLL (一) 之函数调用 声明:大部分代码使用的是微软源码,请查看相关 API 一、新建 DLL 项目 1.选择 Win32 Project,名字 MathFuncsDll 2.Next ->Application type: DLL->Finish 3.添加 MathFuncsDLL.h // MathFuncsDll.h #ifdef MATHFUNCSDLL_EXPORTS #define M 阅读详情

相关推荐

DLL编写及注意点

本文

u013506600的专栏 1585

python win32console_python、unicode和windows控制台

下面的代码将使Python以utf-8的形式输出到控制台,即使在Windows上也是如此。控制台将在Windows 7上很好地显示字符,但在Windows XP上,它将无法很好地显示字符,但至少它可以工作,而且最重要的是,您的脚本在所有平台上的输出都是一致的。您将能够将输出重定向到文件。下面的代码在Windows上用python 2.6进行了测试。#!/usr/bin/python# -*- co...

weixin_39683021的博客 543

解决 Python 中的 ‘No module named ‘win32gui‘‘ 和 ‘No module named ‘win32console‘‘ 错误

在使用 Python 进行 Windows GUI 或控制台编程时,可能会遇到 ‘No module named ‘win32gui’’ 和 ‘No module named ‘win32console’’ 的错误。当你在使用 Python 编写程序时,有时可能会遇到类似于 ‘No module named ‘win32gui’’ 和 ‘No module named ‘win32console’’ 的错误消息。安装完成后,你应该能够使用 ‘win32gui’ 和 ‘win32console’ 模块。

TechPr的博客 2896

OpenSSL安装常见问题

如果执行Configure命令(配置编译参数)”perl configure VC-WIN32”遇到非上述几种情况的报错。如果命令提示符使用正确,建议将openssl的安装路径设置到C盘以外的其他地址,再去运行perl configure VC-WIN32命令。(2)执行Configure命令(配置编译参数)”perl configure VC-WIN32”出现nasm not found。注意:安装完成后将文件路径配置到”系统变量“的Path中;原因:未安装nasm 解决:安装nasm即可。

zntsbkhhh的博客 661

海康威视摄像头CVE-2017-7921漏洞复现:从零到一的实战指南(含解密工具下载)

本文详细解析了海康威视摄像头CVE-2017-7921漏洞的技术原理与复现方法,提供从环境搭建到实战利用的完整指南。通过认证绕过漏洞,攻击者可获取敏感信息并执行高权限操作,文章还包含解密工具下载与防御建议,助力安全研究人员深入理解物联网设备安全风险。

weixin_29325515的博客 814

BEV感知技术全景解析:从纯视觉到多传感器融合的实战指南

本文全面解析了自动驾驶中的BEV感知技术,从纯视觉到多传感器融合的实战应用。文章深入探讨了BEV如何提供“上帝视角”,对比了IPM、Lift-Splat-Shoot及Transformer等核心实现范式,并详细阐述了多传感器融合(尤其是中融合)的工程实践与优势,为开发者提供了从理论到原型搭建的完整指南。

win55的博客 1141

you may need to install the Win32::Console module

ActivePerl-5.28.1.XXXX.msi安装后,命令行执行: D:\work\scm\cfet\openssl>perl Configure VC-WIN32 no-asm no-shared enable-tls1_3 --prefix="D:\work\scm\cfet\openssl\lib\x86" 会出现如下提示而无法继续。 Can't locate Win32...

章志强的专栏 1万+

常规波束形成——时域波束形成、频域波束形成

本文介绍了波束成形,包括时域波束成形和频域波束成形,并解释了在实现过程可能存在疑惑的相位补偿。

Candy_Editor的博客 3668

如何在Win32 Console Application (Win32控制台)程序中使用MFC

如何在Win32 Console Application (Win32控制台)程序中使用MFC (1)包含afx.h文件。#include  (2)Project(工程)->Setting(设置)->General(常规)->将"no   using   MFC",改为另外2项中的任一项  。 (3)Project(工程)->Setting(设置)->C/C++   

人生代码,代码人生。。。 2074

U盘安装单系统ubuntu10.04之全过程&拔掉U盘后系统无法启动

借助U盘把电脑装成ubuntu单系统之过程记录,以及遇到拔掉U盘后系统无法启动问题,电脑就显示: Non-System disk or disk error, replace and strike any key when ready

CXHPLY的专栏 8681

Coze智能体开发:扣子智能体设置多Agent模式

在扣子中创建智能体后,智能体默认使用单 Agent 模式。在单 Agent 模式下处理复杂任务时,你必须编写非常详细和冗长的提示词,而且你可能需要添加各种插件和工作流等,这增加了调试智能体的复杂性。调试时任何一处细节改动,都有可能影响到智能体的整体功能,实际处理用户任务时,处理结果可能与预期效果有较大出入。

王国平的博客 3713

在 Win32 Application 和 Win32 Console Application 中使用 MFC (转)

在 Win32 Application 和 Win32 Console Application 中使用 MFC (转)[@more@] 在 win32 Application 和 Win32 Console Applicati...

csd3176的博客 159

在WSL2中配置代理(Windows)

通过按照上述步骤在WSL2中配置代理,我们可以轻松地在Windows子系统Linux中使用代理服务器访问互联网。请确保提供正确的代理服务器地址和端口号,并根据实际情况进行修改。在WSL2中使用代理是一个常见的需求,它允许我们在Windows子系统Linux中通过代理服务器访问互联网。本文将详细介绍如何在WSL2中配置代理,并提供相应的源代码示例。如果返回的IP地址与代理服务器所在地不同,说明代理正常工作。希望本文能对你有所帮助!如有其他问题,请随时向我提问。替换为实际的代理服务器地址和端口号。

FcUnity的博客 4356

VS2010下实现一个简单的Windows程序

从今天开始真正学习MFC了,一个真正的高手都是从基本功开始的。下面我将详细解剖我的第一个MFC程序。注意哦,我可是新建的Win32 Application 具体实现功能:当用鼠标左键单击程序窗口的用户区时,计算机的扬声器会发出“叮”的声音。 当我们新建一个工程时,选择win32,会有如下两个选项: (1)Win32 Project就是普通的常见的窗口应用程序(VC是Win

suseyaoyao的专栏 1538

JMeter压力测试全攻略:从入门到精通

本文系统讲解JMeter压力测试的完整流程与结果评估方法。开篇介绍压力测试的核心概念及JMeter工具特性,随后从环境搭建入手,详细说明JDK配置、JMeter安装及中文界面设置。主体部分围绕测试流程展开,涵盖测试计划创建、线程组参数调优、HTTP请求配置、断言与监听器添加等实操步骤;结果评估环节深入解析聚合报告指标、结果树分析及性能瓶颈定位方法,并通过电商接口测试案例演示全流程应用。文末总结关键要点,为读者提供从基础操作到分布式压测、性能调优的进阶学习方向,助力掌握JMeter在系统性能评估中的核心应用。

邓邓子的博客 2416

YOLO11-Seg优化:注意力魔改 | 具有切片操作的SimAM注意力,魔改SimAM

问题点:SimAM计算整张特征图的像素差平均值时加权可能会忽略小目标的重要性,同时与整体平均值相比可能和背景信息相似,导致加权增强较弱;

会AI的学姐 459

VC++6.0写动态库

网上的资源很多,但是我搜了一天看得头昏脑胀,对第一次接触动态库的新人来说太不友好了,所以在我终于弄懂了一丢丢的时候决定我也来写一个,希望能帮到一些朋友。 首先动态库的作用大家可以去看其他人写的博客之类的,已经讲的很清楚了,我接触这个是因为我需要改进某个程序里的一小部分,但是由于某种原因不能把某个程序的代码全部拷出来,所以只能用动态库。我的理解就是进行封装,把不方便给别人看的代码部分封装起来,通过.dll和.lib文件让别人去调用进而在需要改进的部分上进行更改。 用VC++6.0创建动态库也有好几种类型,

l2014010671的博客 1351

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

VS检测内存泄漏

首先我们需要知道程序有没有内存泄露,然后定位到底是哪行代码出现内存泄露了,这样才能将其修复。     最常见的是随着软件的运行消耗内存逐渐增大,直至崩溃。  1、VS自带检测功能 假如是用MFC的程序的话,很简单。默认的就有内存泄露检测的功能。 我们用VS生成了一个MFC的对话框的程序,在对话框的的OK按钮点击事件添加内存泄漏点代码: Int *p = new int; 编译、调

碎梦花事の天空 1277

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

计算机可视化编程 对于类中定义的成员,其隐含访问权限为,计算机可视化编程练习题C.doc...

计算机可视化编程练习题C一、单项选择关于类,下列说法不正确的是( )A.在类中,成员的默认访问特性是私有的B.类实现了数据的封装C.类实质上是一种数据类型D.在类的定义中,必须包含private、public、protect对应部分2、关于对象,下列说法中不正确的是( )A.对象是类的一个实例 B.任何一个对象只能属于一个类C.一个类只能有一个对象D.类与对象的关系和数据类型与变量间的关系类似3...

weixin_33309048的博客 506

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Win32 Application 、Win32 Console Application、MFC工程项目

Win32 Application和Win32 Console Application 都是工作在32位Windows环境的程序。 Win32  Application 是标准 windows程序,完全拥有windows的特性,也即我们常说的窗口应用程序!它通过GUI(Graphics User Interface图形用户接口)可以把窗口界面做得比较个性化,比如圆形的、不规则形状的等等,另外,我

anhuidelinger的专栏 5733

VC: Win32 Application和Win32 Console Application、MFC APPWIZARD区别

都是工作在32位Windows环境的程序。 Win32 Application :是普通的常见的窗口应用程序,当然有的界面做得比较个性化,比如 圆形的、不规则形状的…… 它们都是所谓的GUI(Graphics User Interface图形用户接口),我们 可以通过鼠标点击来完成控制。 Win32 Application:是为你开发windows应用程序所准备的,程序 以WinMain()为入口,#include,能够使用win32 API函数。 而Win32 Console

fengyunjh的专栏 1938
上一篇: 最简单的反弹后门设计和基本模块代码
下一篇: CreateProcess创建的子进程的命令行参数
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值