`
happmaoo
  • 浏览: 4471997 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

《Windows图形编程》中的一个例程所引发的收获和思考

阅读更多

作者:朱金灿
来源:http://blog.csdn.net/clever101/


袁峰大侠著的《Windows图形编程》是一本学习《Windows图形编程》的好书。书中的第二个例程值得探究。第二个例程的代码如下:



我使用VS C++ 2005(带sp1)建一个Win32应用程序的空工程--Hello2,新建一个Hello2.cpp,把上面的代码敲进去,生成Hello2.exe,调试运行被告知无法启动Hello2.exe,双击Hello2.exe被提示Hello2.exe不是有效的Win32程序,于是上网搜资料,发帖提问。VC知识库的杨大侠告知:


/ALIGN 选项指定程序线性地址空间中每一节的对齐方式。number 参数以字节为单位,并且必须是 2 的幂。默认值是 4K (4096)。如果对齐方式产生无效的图像,则链接器发出警告。

除非正在编写诸如设备驱动程序的应用程序,否则应不需要修改对齐方式。

可以用 /SECTION 选项的对齐参数修改特定节的对齐方式。

指定的对齐值不能小于最大的节对齐。


按照杨大侠的说法,/ALIGN 选项参数的最小值应为1024,于是我试着把#pragma comment(linker, "-align:512")改为#pragma comment(linker, "-align:1024"),结果真能运行起来。#pragma comment(linker, "-merge:.rdata=.text")和#pragma comment(linker, "-align:512")这两句代码的作用应该是为了减少生成的二进制文件的大小。



另外这个例程的代码在VC 6.0是可以运行的,也就是说VC 6.0可以接受#pragma comment(linker, "-align:512"),不过工程设置方面需要作如下设置:


C++选项卡下的Project Optons下输入如下设置:
/nologo /MLd /W3 /Gm /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /Fo"Debug/" /Fd"Debug/" /FD /c


Link选项卡下的Project Optons下输入如下设置:
kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /incremental:yes /pdb:"Debug/Hello2.pdb" /map:"Debug/Hello2.map" /debug /machine:I386 /out:"Debug/Hello2.exe" /pdbtype:sept


另外运行VC 6.0生成的exe文件可能会被杀毒软件误报为病毒(我的小红伞杀毒软件就是这样提示),估计这是杀毒软件以为该exe文件是病毒所致,这时选择忽略即可。




分享到:
评论

相关推荐

    windows多线程编程及例程

    1. **MultiThread1**:可能展示了如何创建和启动一个简单的线程,以及如何在线程函数中执行特定任务。 2. **MultiThread2**:可能涉及到线程的同步,如使用`CreateSemaphore`和`ReleaseSemaphore`控制线程执行顺序。...

    易语言几何图形模块1源码,易语言几何图形模块1.0及使用例程

    《易语言几何图形模块1.0及使用例程》是一个专为易语言用户设计的图形绘制工具包,它提供了一系列接口和示例程序,帮助开发者在易语言环境中创建丰富的图形界面和动态图形效果。易语言作为一款中国本土的编程语言,...

    Windows编程课件(附带课件所用例程)

    Windows编程是计算机科学领域的一个重要分支,主要涉及使用Microsoft Windows操作系统提供的API(应用程序接口)来创建各种应用程序。本课件旨在深入解析Windows编程的核心概念和技术,帮助初学者和进阶者掌握开发...

    VC++ windows API 串口编程简单例程

    在IT领域,串口通信是一种基础且...总之,VC++结合Windows API进行串口编程是一个涉及硬件交互、通信协议和低级I/O操作的过程。通过深入学习和实践,不仅可以掌握串口通信技术,还能提升对操作系统和底层编程的理解。

    php编程实例的所有例程

    总的来说,"php编程实例的所有例程"是一个全面的教育资源,旨在通过实例化学习,帮助开发者巩固PHP基础知识,提升实际编程技巧,并为解决实际问题提供参考。无论是初学者还是有经验的开发者,都应该充分利用这些资源...

    VC读写ini配置文件代码例程

    在Windows编程中,INI文件是一种常见的配置文件格式,用于存储应用程序的设置和用户偏好。本文将深入探讨如何在VC++环境中使用C语言读写INI配置文件,并通过`GetiniString_App`这个API例程来实现这一功能。 首先,...

    windows经典例程

    在Windows操作系统开发中,Visual Studio(VS)是一个广泛使用的集成开发环境(IDE),它支持C++编程语言,为创建高效、稳定的应用程序提供了强大的工具集。"Windows经典例程"通常指的是利用C++和Windows API编写的...

    中文编程-从入门到精通例程源码

    第六部分,"我的播放器例程源码",是一个实践项目,它结合了前面所学的知识,如文件操作、事件处理和图形用户界面,让学习者能够实现一个完整的多媒体播放器。这样的项目实践有助于巩固理论知识,并提升实际编程技能...

    LabView图形化编程语言之例程DMC3000系列.zip

    这个名为“LabView图形化编程语言之例程DMC3000系列”的压缩包文件,显然包含了与LabView相关的代码示例,特别针对DMC3000系列设备的测试和测量应用。 DMC3000系列是国家仪器公司推出的一系列高性能数据采集和控制...

    易语言编程超级模块及例程

    同时,还可以学习到如何组织和设计一个完整的程序,包括模块化设计、错误处理、程序调试等高级技巧。 此外,易语言还提供了丰富的内置函数和库支持,例如文件操作、数据库访问、图形绘制等。这些在例程中也会有所...

    几个vb例程,总有一个适合你

    【标题】"几个vb例程,总有一个适合你"提供了100个VB(Visual Basic)编程的示例,旨在帮助初学者入门和有经验的开发者进行参考。这些例程覆盖了VB.NET的各种主题,包括但不限于.NET框架的使用、Windows Forms编程、...

    HART协议编程例程

    5. **多路复用技术**:HART协议允许在一个物理通道上同时传输模拟信号和数字信号,实现与传统4-20mA系统的兼容。 6. **设备识别**:HART协议支持设备地址,程序需要能正确识别和选择要通信的设备。 **readme_...

    MFC Windows程序设计光盘例程

    文档/视图架构是MFC中的一个重要特性,它将数据(文档)与显示(视图)分离,提供了数据处理和用户界面之间的清晰划分。通过CDocument和CView类,开发者可以轻松管理数据存储和用户界面更新。同时,MFC还提供了...

    易语言源码编程超级模块及例程.rar

    易语言源码编程超级模块及例程.rar 易语言源码编程超级模块及例程.rar 易语言源码编程超级模块及例程.rar 易语言源码编程超级模块及例程.rar 易语言源码编程超级模块及例程.rar 易语言源码编程超级模块及例程....

    visual c++游戏编程入门例程

    通过在OnDraw函数中添加代码,可以创建一个矩形、圆形和三角形的动画。 实例1_2:位变 该实例展示了如何使用Visual C++创建一个位变动画。通过在OnDraw函数中添加代码,可以创建一个圆形在不同的位置上出现的动画...

    LabVIEW编程与虚拟仪器设计例程库

    "LabVIEW编程与虚拟仪器设计例程库"是一个集合了多种LabVIEW编程示例和应用实例的资源库,旨在帮助用户快速理解和掌握LabVIEW在实际工程中的应用。 这个例程库包含了许多不同的项目,可能涵盖了以下关键知识点: 1...

    一个简单的驱动程序例程

    标题中的“一个简单的驱动程序例程”指的是在计算机操作系统中,编写用于控制硬件设备或与硬件交互的低级代码。这种代码通常被称为驱动程序,它充当操作系统与硬件之间的桥梁,使得操作系统能有效地管理和使用硬件...

    VC网络编程模型示例 - 完成例程模型(CompletionRoutine)

    首先,完成例程模型是Windows套接字API(Winsock)中的一个关键特性,它通过异步I/O来提高程序性能。当一个网络I/O操作完成后,系统会调用预先设定的完成例程,而不是阻塞当前线程等待I/O完成。这使得应用程序能够...

    W5500例程合集

    **W5500例程合集** 是一个专门针对W5500网络接口芯片的编程示例集合,主要用于教育和学习目的。这个合集是基于Keil uVision4集成开发环境(IDE)编写的,它包含了多个功能各异的应用程序,涵盖了网络通信中的常见...

Global site tag (gtag.js) - Google Analytics