使用 wxWdigets 时发现的好玩的事情--VC++ 编译器怎么找到 WinMain 或 wWinMain 函数

【C++】wxWidgets编程的程序入口点 该宏会扩展为一个实现了`main`函数或者在Windows上是`WinMain`函数的代码。`wxIMPLEMENT_APP`宏与`wxDECLARE_APP`宏一起使用来设置基于wxWidgets的应用程序的启动代码。public:// 创建和显示主窗口这段代码定义了一个应用程序类`MyApp`,该类继承自`wxApp`,并且通过重载`OnInit`方法来初始化应用程序。`wxIMPLEMENT_APP`宏定义接下来负责创建程序的入口点,它会创建一个应用程序实例并开始事件循环。 阅读详情

使用 wxWdigets 时发现的好玩的事情–VC++ 编译器怎么找到 WinMain 或 wWinMain 函数

在使用 wxWdigets 时,发现 wxIMPLEMENT_APP(MyApp); 这一行代码会被扩展成下面的代码:

extern "C" int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, wxCmdLineArgType lpCmdLine, int nCmdShow) {
   
   
    ; ; return wxEntry(hInstance, hPrevInstance, lpCmdLine, nCmdShow);
} MyApp& wxGetApp() {
   
   
    return *static_cast<MyApp*>(wxApp::GetInstance());
} wxAppConsole* wxCreateApp() {
   
   
    wxAppConsole::CheckBuildOptions("3" "." "2" " (" "wchar_t" ",Visual C++ " "1900" ",STL containers" ",compatible with 3.0" ")", "your program"); return new MyApp;
} wxAppInitializer wxTheAppInitializer((wxAppInitializerFunction)wxCreateApp)

可以看到,入口函数是 WinMain。在我编译完成 wxWidgets 源代码,并且把编译后的库安装到另一个路径后,我的项目已经脱离了 wxWidgets 源代码目录,也就是说我的项目的编译过程,是不被编译 wxWidgets 代码时的目录结构、配置文件影响的。这种情况下,应该是只需要设置好头文件路径、库路径,就可以正常使用 wxWidgets 了。

然而,意想不到的事情发生了。同一代码,wxWdigets 构建目录中的 Demo bombs 可以编译并且链接成功,在我的项目目录里就不能链接成功,错误原因如下:

LIBCMTD.lib(exe_wwinmain.obj) : error LNK2019: 无法解析的外部符号 wWinMain,函数 "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) 中引用了该符号

没有找到 wWinMain。当然不会找到,因为 wxWidgets 定义的入口点是 WinMain。可是,为什么 bombs 可以成功链接呢?经过一些研究发现,把 bombs 所属的解决方䅁里的其它项目全部移除;把 bombs 这个项目里

wxWidgets:wxApp Overview 在这个例子中,我们定义了一个继承自wxApp的MyApp类,并在main函数中使用wxIMPLEMENT_APP宏来实现wxApp的声明和定义。通过继承wxApp并重写它的虚函数,我们可以轻松地自定义应用程序的行为并实现我们想要的功能。总之,wxApp是wxWidgets应用程序的核心类,它提供了应用程序生命周期管理和消息传递的基础功能。在本篇文章中,我们将对wxApp进行全面的概述。OnRun(): 这个函数在应用程序启动后被调用,它控制应用程序的主循环,使得应用程序可以响应用户的输入和事件。 阅读详情

相关推荐

wxWidgets四大布局管理器使用实战示例

在现代桌面应用开发中,构建响应式、跨平台兼容的用户界面至关重要。wxWidgets通过其基于sizer的布局管理系统,彻底摒弃了传统的绝对坐标定位方式,转而采用“容器驱动”的动态布局模型。该系统以父子容器关系为基础,通过布局管理器(如wxBoxSizer等)自动协商控件尺寸与位置,实现窗口缩放时的智能重排。其核心设计思想包含两大机制:1.比例伸缩(Proportional Resizing):通过proportion参数分配控件在主轴上的扩展权重;2.

weixin_33375360的博客 1082

wxwidgets.chm

wxwdigets gui库 文档 3.0版本

wxWidgets实现无标题栏窗口拖动效果

主要为大家详细介绍了wxWidgets实现无标题栏窗口拖动效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

Drools vs URule:5个真实项目场景告诉你如何选择开源规则引擎

本文通过电商风控、物流计费、会员体系、保险定价和物联网告警五个真实项目场景,深度对比了Drools与URule两款开源规则引擎。分析了两者在规则复杂度、性能表现、开发运维及适用场景上的核心差异,为技术选型提供基于实战的决策指南。

k6l7m8n9的博客 943

宇树机器人G1二次开发:导览、起始点、目的地与完整示例

通过宇树G1 SDK的导航接口,开发者可以高效地实现机器人的自主移动功能。连接 -> 设置目标点 -> 发送命令 -> 监控状态。本文提供的完整示例涵盖了从环境搭建到代码实现的全部步骤,并解释了起始点、目的地等关键概念。开发者可以在此基础上,结合多目标点巡逻、动态避障(需高级配置)等功能,构建更复杂的机器人应用。建议读者先在小范围、熟悉的平坦环境中测试,成功后再逐步扩展到更复杂的场景。

m0_52645558的博客 747

保姆级教程:用OpenCV搞定鱼眼双目相机的标定与测距(附完整C++代码)

本文详细介绍了使用OpenCV进行鱼眼双目相机标定与测距的全流程,包括环境搭建、数据采集、单目标定、双目标定、立体校正和视差计算等核心步骤。通过完整的C++代码示例和参数调优指南,帮助开发者快速实现高精度的双目测距系统,适用于机器人导航、VR全景拍摄等领域。

weixin_42573113的博客 387

[USACO2023-JAN-Bronze] T2 Air Cownditioning II 题解

[USACO2023-JAN-Bronze] T2 Air Cownditioning II题解

1651

【Python基础】FastAPI 从入门到项目实战操作详解

【Python基础】FastAPI从入门到使用实战操作详解

congge_study的博客 436

【实战篇导读】四足机器人运动控制导读

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对四足机器人运动运动控制系统及相关算法做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章主要介绍了波士顿spot机器人的发展历史、四足机器人的硬件系统及电机执行器组成包括硬件系统、关节电机执行器,机载传感器机处理器及电气连接等。概述了四足机器人规划控制、感知、定位及局部地图的相关算法方向。

qq_35635374的博客 678

OceanSim: 基于Isaac Sim GPU 加速水下机器人感知仿真框架

OceanSim 采用先进的基于物理的渲染技术,对水下视觉和声学传感器进行精确建模。与其他模拟引擎相比,OceanSim 的渲染速度要快得多。作为 NVIDIA Issac Sim 的扩展,OceanSim 采用了多功能设计。通过融入快速发展的 NVIDIA Omniverse 生态系统,我们的模拟器自然而然地在机器人学习和水下机器人技术之间架起了一座桥梁,从而促进了水下应用中体现型人工智能技术的开发和部署。OceanSim 将以开放源码的方式提供,使研究界能够以合作的模式作出贡献。

机器人控制与仿真应用 2049

【学习系列】SAP RAP 3:添加多层级的子节点

本文详细介绍了在SAP ABAP RAP开发中如何创建多层级业务对象。主要内容包括:1)创建明细和计划行层级的数据库表及CDS视图;2)使用association和composition关键字建立父子关联关系;3)创建各层级的投影视图并设置层级关系;4)更新行为定义,添加关联、操作权限等控制;5)更新服务定义公开新增视图;6)创建元数据扩展优化UI展示。通过这一系列步骤,实现了从抬头到明细再到计划行的完整业务对象层级结构,为后续UI功能扩展奠定了基础。

DeveloperMrMeng的博客 587

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

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

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

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

上一篇: Python 在不同开发领域中的策略和功能
下一篇: 高效编写 Python 文档的方法
dowhileprogramming
博客等级 码龄25年 512粉丝 78原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dowhileprogramming

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值