收藏 分享(赏)

处理vc60编译问题(vc新手篇-个人总结分享)-.doc

上传人:cjc2202537 文档编号:1237175 上传时间:2018-06-19 格式:DOC 页数:9 大小:295.50KB
下载 相关 举报
处理vc60编译问题(vc新手篇-个人总结分享)-.doc_第1页
第1页 / 共9页
处理vc60编译问题(vc新手篇-个人总结分享)-.doc_第2页
第2页 / 共9页
处理vc60编译问题(vc新手篇-个人总结分享)-.doc_第3页
第3页 / 共9页
处理vc60编译问题(vc新手篇-个人总结分享)-.doc_第4页
第4页 / 共9页
处理vc60编译问题(vc新手篇-个人总结分享)-.doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

1、处理 VC6.0 编译问题(VC 新手篇)可能很多新同学熟悉的开发平台是 linux,平时使用的开发工具也不是 VC6.0,一些编译问题可能会困扰着他们。同时我发现之前大家经常因为 VC 环境下编译不过的问题一直纠结,我在网上找了一些基础知识材料,整理到第一章。这里先分享给大家一些编译相关的知识,然后有针对性地给大家讲讲和咱们工作中遇到过的问题。1. 编译选项CL.exe 是控制 Microsoft C 和 C+ 编译器与链接器的 32 位工具。注意,所有编译器选项都区分大小写。使用 NMAKE 生成输出文件。使用 BSCMAKE 支持类浏览。以下是一个完整的编译器选项分类列表。1.1.优化选

2、项 作用/O1 创建小代码/O2 创建快速代码/Oa 假设没有别名/Ob 控制内联展开/Od 禁用优化/Og 使用全局优化/Oi 生成内部函数/Op 改善浮点数一致性/Os 代码大小优先/Ot 代码速度优先/Ow 假定在函数调用中使用别名/Ox 使用最大优化(/Ob1gity/Gs)/Oy 省略框架指针1.2. 代码生成选项 作用/clr 启用 C+ 的托管扩展并产生在公共语言运行库上运行的输出文件/EH 指定异常处理模型/G3 优化代码以优选 386 处理器。在 VC+ 5.0 中已经停用,编译器将忽略此选项/G4 优化代码以优选 486 处理器。在 VC+ 5.0 中已经停用,编译器将忽略

3、此选项/G5 优化代码以优选 Pentium/GB 与 /G6 等效;将 _M_IX86 的值设置为 600/Gd 使用 _cdecl 调用约定/Ge 激活堆栈探测/GF 启用字符串池/GH 调用挂钩函数 _penter/GH 调用挂钩函数 _pexit/GL 启用全程序优化/Gm 启用最小重新生成/Gr 启用运行时类型信息 (RTTI)/Gr 使用 _fastcall 调用约定/GS 控制堆栈探测/GT 支持使用静态线程本地存储区分配的数据的纤程安全/GX 启用同步异常处理/Gy 启用函数级链接/GZ 使用 _stdcall 调用约定/MD 使用 MSVCRT.lib 创建多线程 DLL/M

4、Dd 使用 MSVCRTD.lib 创建调试多线程 DLL/ML 使用 LIBC.lib 创建单线程可执行文件/MLd 使用 LIBCD.lib 创建调试单线程可执行文件/MT 使用 LIBCMT.lib 创建多线程可执行文件/MTd 使用 LIBCMTD.lib 创建调试多线程可执行文件1.3. 输出文件选项 作用/FA 创建列表文件,设置列表文件名/Fd 重命名程序数据库文件/Fe 重命名可执行文件/Fm 创建映射文件/Fo 创建对象文件/Fp 指定预编译头文件名/FR 生成浏览器文件/Fx 将插入的代码与源文件合并1.4. 调试选项 作用/GS 缓冲区安全检查/GZ 与 /RTC1 相同

5、/RTC 启用运行时错误检查/Wp64 检测 64 位可移植性问题/Yd 将完整的调试信息放在所有对象文件中/Yl 创建调试库时插入 PCH 引用/Z7 生成与 C 7.0 兼容的调试信息/Zd 生成行号/Zi 生成完整的调试信息1.5. 预处理器选项 作用/AI 指定在解析传递到#using 指令的文件引用时搜索的目录/c 在预处理期间保留注释/D 定义常数和宏/E 将预处理器输出复制到标准输出/EP 将预处理器输出复制到标准输出/Fl 预处理指定的包含文件/FU 强制使用文件名,就像它已被传递到#using 指令一样/I 在目录中搜索包含文件/P 将预处理器输出写入文件/U 移除预定义宏/

6、U 移除所有的预定义宏/X 忽略标准包含目录/ZI 将调试信息包含在与“编辑并继续”兼容的程序数据库中1.6. 语言选项 作用/noBool 取消 C+bool、true 和 false 关键字/vd 取消或启用隐藏的 vtordisp 类成员/vmb 对指向成员的指针使用最佳的基/vmg 对指向成员的指针使用完全一般性/vmm 声明多重继承/vms 声明单一继承/vmv 声明虚拟继承/Za 禁用语言扩展/Zc 在/Ze 下指定标准行为/Ze 启用语言扩展/Zg 生成函数原型/Zl 从.obj 文件中移除默认库名/Zp n 封装结构成员/Zs 只检查语法1.7. 链接选项 作用/F 设置堆栈大

7、小/LD 创建动态链接库/LDd 创建调试动态链接库/link 将指定的选项传递给 LINK/MD 使用 MSVCRT.lib 编译以创建多线程 DLL/MDd 使用 MSVCRTD.lib 编译以创建调试多线程 DLL/ML 使用 LIBC.lib 编译以创建单线程可执行文件/MLd 使用 LIBCD.lib 编译以创建调试单线程可执行文件/MT 使用 LIBCMT.lib 编译以创建多线程可执行文件/MTd 使用 LIBCMTD.lib 编译以创建调试多线程可执行文件1.8. 预编译头选项 作用/Y- 忽略当前生成中的所有其他预编译头编译器选项/Yc 创建预编译头文件/Yd 将完整的调试信

8、息放在所有对象文件中/Yu 在生成期间使用预编译头文件/YX 自动处理预编译头1.9. 杂项选项 作用 指定响应文件/? 列出编译器选项/c 编译但不链接/H 限制外部(公共)名称的长度/HELP 列出编译器选项/J 更改默认的 char 类型/NOLOGO 取消显示登录版权标志/QI0f 确保 Pentium0F 指令没有问题/QIfdiv FDIV、FPREM、FPTAN 和 FPATAN 指令有缺陷的 IntelPentium 微处理器的变通方法QIfist 当需要从浮点类型转换为整型时取消 Helper 函数_ftol 的调用/showIncludes 在编译期间显示所有包含文件的列表

9、/Tc 指定 C 源文件/Tp 指定 C+源文件/V 设置版本字符串/w 设置警告等级/w 禁用所有警告/Wall 启用所有警告,包括默认情况下禁用的警告/WL 在从命令行编译 C+源代码时启用错误信息和警告消息的单行诊断/Zm 设置编译器的内存分配限制 2. 常见问题2.1.找不到头文件当编译器报错,找不到头文件,通常是 No Such File 的错误,这个时候的解决方法是将头文件加入工程中:(1) 方法 1:在 VC 工程的 WorkSpace 中添加缺少的头文件。(2) 修改工程的 Setting 选项。(3) 直接修改编译选项a) 直接修改 Setting 中的编译选项:语法为 “/

10、I + 路径”b) 修改 dsp 文件:2.2. 找不到函数原型通常找不到函数原型的解决方法只有一种,找到函数原型(开个玩笑) 。首先要了解函数的实现可能在哪里?对了,源文件、lib 库、 DLL 等。和咱们工作相关的只有两种情况:源文件和 lib 库。那么就针对这两种情况2.2.1. 找不到源文件如果使用 VC 工具开发,工程中引入源文件的方法推荐使用 2.1 中的(1)方法添加,这是最快最直观的方式。如果使用 Makefile 编译,则修改 Makefile 中的相关选项,本文不重点讲解。2.2.2. 找不到静态库如果使用 Makefile 编译,则修改 Makefile 中的相关选项,本

11、文不重点讲解。如果使用 VC 工具开发,工程中引入静态库的方法有:(1) 可以使用 2.1 中的(1)方法添加,这是最快最直观的方式。(2) 推荐使用修改 Setting 的方式添加静态库,并且使用相对路径。2.3. 找不到定义通常找不到定义的情况要检查以下几种情况:(1) 检查是否是因为语句后没有分号。(2) 检查函数是否没有声明。(3) 检查源文件是否包含了声明函数的头文件。(4) 检查是否本定义需要定义编译宏。(5) 检查是否因为书写的大小写问题引入编译问题。(6) 全局搜索变量或者函数的定义在哪里,然后将其定义添加到工程中。2.4. 引用的变量不是结构成员这类问题通常是由于配套问题引起

12、,此时需要检查以下几点:(1) 检查结构体定义。(2) 检查是否是因为大小写的问题引起。(3) 检查是否是因为类型不对(有的时候将 uc 的变量写成了 us、ul) 。2.5. 函数不正确这类问题通常是由于版本不配套引起,此时需要检查以下几点:(1) 检查函数定义,看参数的个数、顺序、类型。(2) 检查函数的声明是否和函数的定义一致。(3) 检查函数的返回值类型是否正确。3. 总结本文仅仅是针对一些低级的编译错误进行了常见问题的分析和解决方法,可能平时我遇到的编译问题本身就不是很多,所以很多情况我不可能穷尽所有的常见的编译问题,所以需要大家一起将自己遇到过的问题刷新到这个文档中,在提升个人能力的同时,提高工作效率。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 实用文档 > 工作总结

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报