CR的代码文本

all for learning about the world
  订阅 订阅  :: 管理

2011年5月31日

摘要: 以下内容来源于网络,作者不明。转自:http://advancedcj.wordpress.com/2010/06/18/c-runtime-library-5/(接上文) 上文描述了虽然各目标模块指定了不同版本的缺省标准库但仍然链接成功的例子,接下来你将目睹因为这种不严谨而导致的悲惨失败。 修改mylib.c成这个样子:#includevoidfoo(){//justatest,don’tcarememoryleak_malloc_dbg(1,_NORMAL_BLOCK,__FILE__,__LINE__);}其中_malloc_dbg不是ANSI C的标准库函数,它是VC标准库提供的mal 阅读全文

posted @ 2011-05-31 16:43 mumuliang 阅读(359) 评论(0) 推荐(0) 编辑

摘要: 以下内容来源于网络,作者不明。转自:http://advancedcj.wordpress.com/2010/06/18/c-runtime-library-4/(接上文) VC带的编译器名字叫cl.exe,它有这么几个与标准程序库有关的选项: /ML、/MLd、/MT、/MTd、/MD、/MDd。这些选项告诉编译器应用程序想使用什么版本的C标准程序库。/ML(缺省选项)对应单线程静态版的标准程序库(libc.lib);/MT对应多线程静态版标准库(libcmt.lib),此时编译器会自动定义_MT宏;/MD对应多线程DLL版(导入库msvcrt.lib,DLL是msvcrt.dll),编译器 阅读全文

posted @ 2011-05-31 16:41 mumuliang 阅读(302) 评论(0) 推荐(0) 编辑

摘要: 以下内容来源于网络,作者不明。转自:http://advancedcj.wordpress.com/2010/06/18/c-runtime-library-3/许多Visual C++的使用者都碰到过LNK2005:symbol already defined和LNK1169:one or more multiply defined symbols found这样的链接错误,而且通常是在使用第三方库时遇到的。对于这个问题,有的朋友可能不知其然,而有的朋友可能知其然却不知其所以然,那么本文就试图为大家彻底解开关于它的种种疑惑。 大家都知道,从C/C++源程序到可执行文件要经历两个阶段 1)编译 阅读全文

posted @ 2011-05-31 16:38 mumuliang 阅读(386) 评论(0) 推荐(0) 编辑

摘要: 以下内容来源于网络,作者不明。转自:http://advancedcj.wordpress.com/2010/06/18/c-runtime-library-2/(接上文)四 各种C运行时库的区别编译器链接选项:Visual C++编译时到底哪个C运行时库联入程序取决于编译选项,选项告诉编译器应用程序想使用什么版本的C标准程序库。与标准程序库有关的选项:/ML、/MLd、/MT、/MTd、/MD、/MDd/ML对应单线程静态版的标准程序库(libc.lib);/MT对应多线程静态版标准库(libcmt.lib),此时编译器会自动定义_MT宏;/MD对应多线程DLL版(导入库msvcrt.lib 阅读全文

posted @ 2011-05-31 16:36 mumuliang 阅读(1770) 评论(0) 推荐(0) 编辑

摘要: 以下内容来源于网络,作者不明。转自:http://advancedcj.wordpress.com/2010/06/18/c-runtime-library-1/一 产生运行时库是程序在运行时所需要的库文件,通常以LIB或DLL形式提供。C运行时库就是C run-time library,诞生于20世纪70年代,是C而非C++语言世界的概念,C程序运行时需要这些库中的函数。C 语言是所谓的“小内核”语言,就其语言本身来说很小(不多的关键字,程序流程控制,数据类型等)。所以,C语言内核开发出来之后,Dennis Ritchie和Brian Kernighan就用C本身重写了90%以上的UNIX系 阅读全文

posted @ 2011-05-31 16:34 mumuliang 阅读(507) 评论(0) 推荐(0) 编辑