选择静态编译(工程->常规->Microsoft基础类->使用MFC作为静态链接库)的时候,会报错:MSVCRTD.lib(MSVCRTD.dll)
: error LNK2005: _sprintf already defined in
LIBCMTD.lib(sprintf.obj)报错的意思及原因是使用的某些外部静态库编译时使用的标准库和当前工程使用的标准库冲突。

所以需要设置标准库并忽略一些库:

首先需要设置run-time library

工程->设置->C++->Code Generation->Use run-time library

可供选择的Use run-time
library有6项:Single-threaded、Multithreaded、Multithreaded using
DLL、Debug Single-threaded、Debug Multithreaded、Debug Multithreaded
using DLL。

不同的Use run-time library对应地忽略不同的库文件。对应关系如下:

Single-threaded (libc.lib)单线程静态链接库(release版本)

libcmt.lib, msvcrt.lib, libcd.lib, libcmtd.lib, msvcrtd.lib

Multithreaded (libcmt.lib)多线程静态链接库(release版本)

libc.lib, msvcrt.lib, libcd.lib, libcmtd.lib, msvcrtd.lib

Multithreaded using DLL (msvcrt.lib)多线程动态链接库(release版本)

libc.lib, libcmt.lib, libcd.lib, libcmtd.lib, msvcrtd.lib

Debug Single-threaded (libcd.lib)单线程静态链接库(debug版本)

libc.lib, libcmt.lib, msvcrt.lib, libcmtd.lib, msvcrtd.lib

Debug Multithreaded (libcmtd.lib)多线程静态链接库(debug版本)

libc.lib, libcmt.lib, msvcrt.lib, libcd.lib, msvcrtd.lib

Debug Multithreaded using DLL (msvcrtd.lib)多线程动态链接库(debug版本)

libc.lib, libcmt.lib, msvcrt.lib, libcd.lib, libcmtd.lib

如何忽略呢?

工程->设置->连接->输入->忽略库->即可。

不同的编译方式有什么差异呢?

单线程: 不需要多线程调用时, 多用在DOS环境下

多线程: 可以并发运行

静态库: 直接将库与程序Link, 可以脱离MFC库运行

动态库: 需要相应的DLL动态库, 程序才能运行

release版本: 正式发布时使用

debug版本: 调试阶段使用

对应地忽略这些库之后,会产生一个新的问题:

nafxcwd.lib(appcore.obj) : error LNK2001: unresolved external
symbol ___argv

nafxcwd.lib(appcore.obj) : error LNK2001: unresolved external
symbol ___argc

nafxcwd.lib(timecore.obj) : error LNK2001: unresolved external
symbol __mbctype

nafxcwd.lib(apphelp.obj) : error LNK2001: unresolved external
symbol __mbctype

nafxcwd.lib(filelist.obj) : error LNK2001: unresolved external
symbol __mbctype

这个问题如何解决呢?

工程->设置->C/C++->预处理器->预处理器定义 _AFXDLL。

问题就解决了。

VC6.0静态编译注意事项的更多相关文章

  1. vc6.0批量编译

    一直想研究一下怎么让电脑批处理编译程序,今天就从vc6开始,做个记录,学习一下. VC可以生成make文件(Project->Export Makefile),在设置好环境变量下,执行NMAKE ...

  2. vc6.0 点编译时提示Cannot complile the file 'D:\souce-code\vc-workspace\对话框\MainFrm.h'; no compile tool is

    问题描写叙述: vc6.0程序,点击编译时提示对话框,内容为: Cannot complile the file 'D:\souce-code\vc-workspace\对话框\MainFrm.h'; ...

  3. VC6.0常见编译错误提示

    原文:http://c.biancheng.net/cpp/html/746.html 1) error C2001: newline in constant 编号:C2001 直译:在常量中出现了换 ...

  4. 在VC6.0中编译头文件时产生moc文件

    1.在FileView视图中 右键点击需要产生moc文件的头文件(就是类中包含Q_OBJECT宏,如果没有这个宏就不需要产生moc文件) 2.在右键菜单中选择Setting... 3.选择Custom ...

  5. MinGW平台 openjpeg-2.1.0 静态编译后未定义引用的解决方法

    undefined reference to __imp_opj_xxx keyword: ffmpeg,openjpeg,OPJ_EXPORTS,OPJ_STATIC,opj_version,__i ...

  6. 比特币初始版本VC6.0编译

    1 源码下载 github上初始版本是bitcoin-0.1.5,可以从https://github.com/bitcoin/bitcoin下载,但是从网上可以找到更老版本bitcoin-0.1.0, ...

  7. Qt5.4静态编译方法

    静态编译,就是编译器在编译可执行文件的时候,将可执行文件需要调用的对应动态链接库(.so或.lib)中的部分提取出来,链接到可执行文件中去,使可执行文件在运行的时候不依赖于动态链接库.这样就可以发布单 ...

  8. vc6.0里使用lib(静态库)的方法

    vc6.0 中使用lib文件 使用库的方法如下:1. 包含库的头文件(把库的头文件包含到项目中)在应用程序工程中使用#include "file path"file path可以为 ...

  9. pcre7.0在vc6.0编译

    (0)从http://gnuwin32.sourceforge.net/packages/pcre.htm  (pcre windows)下下载最新的windows平台源代码pcre-7.0-src. ...

随机推荐

  1. HDU_1846 Brave Game 【巴什博弈】

    题目: 十年前读大学的时候,中国每年都要从国外引进一些电影大片,其中有一部电影就叫<勇敢者的游戏>(英文名称:Zathura),一直到现在,我依然对于电影中的部分电脑特技印象深刻. 今天, ...

  2. 113th LeetCode Weekly Contest Reveal Cards In Increasing Order

    In a deck of cards, every card has a unique integer.  You can order the deck in any order you want. ...

  3. nginx 地址重写

    例如, www.baidu.com    跳到   www.baidu.com/index.html #if ( $http_host ~* "^(.*)\.baidu\.com$" ...

  4. Zabbix触发器函数之count函数

    一.背景 zabbix监控中我们用的最多的是count这个函数,通过确认多次可以减少很多误告警,提高了运维效率.可以设置连续几次都异常才发出告警,这样一来,只要发出告警基本上就已经确定发生故障了. 二 ...

  5. spark第二篇:Application Submission Guide

    提交应用 Spark的bin目录中的spark-submit脚本用于启动集群上的应用程序.它可以通过一个统一的接口使用所有Spark支持的集群管理器. 绑定应用程序的依赖 如果你的代码依赖其他项目,你 ...

  6. mysql - VARCHAR与VHAR的区别

    一, 基本介绍 char 和 varchar 两类型类似, 用来存储字符串,不同之处来自于他们的保存和检索的差别, char 属于固定的长度字符类型, 而varchar 属于可变长度的字符类型 值 C ...

  7. Python 的 __new__()方法与实例化

    __new__() 是新式类中才有的方法,它执行在构造方法创建实例之前.可以这么理解,在 Python 中类中的构造方法 __init__() 负责将类实例化,而在 __init__() 启动之前,_ ...

  8. HDU 2795——Billboard——————【单点更新、求最小位置】

    Billboard Time Limit:8000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit St ...

  9. bzoj 5302: [Haoi2018]奇怪的背包

    Description Solution 首先 \(v_1,v_2,v_3...v_n,P\) 能够构成的最小数是 \(gcd(P,v_1,v_2,v_3...v_n)\) 然后 \(gcd(P,v_ ...

  10. [DForm]我也来做自定义Winform之另类标题栏重绘

    据说得有楔子 按照惯例,先来几张样例图(注:为了展示窗口阴影效果,截图范围向外扩展了些,各位凭想象吧).                   还要来个序 其实,很多年没写过Winform了,前端时间在 ...