VC中缺省库冲突的解决
来源:互联网 发布:hello医生知兮百度云 编辑:程序博客网 时间:2024/06/11 10:00
VC在编译程序时有两个习惯:
1、在从头开始编译时(即生成makefile时),将源文件名按字母排序后,依次处理;
2、一边编译一边决定需要哪些缺省库。
它的这些习惯有时会造成奇怪的编译错误,例如项目中有两个文件:
charutil.c
gbuni.cpp
其中gbnni.cpp用到了MFC库。
编译器先处理charutil.c,然后觉得需要link一个C Runtime库,根据项目设置选择了LIBCMTD.lib。
然后又处理gbnni.cpp,因为要用MFC,又决定要link nafxcwd.lib。
最后link的时候,就会出现以下冲突:
nafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) already defined in LIBCMTD.lib(dbgdel.obj)
其实,如果先link nafxcwd.lib,再link LIBCMTD.lib,就不会产生冲突。
解决这类问题有两个办法。
1、将需要link C Runtime库的文件(charutil.c)的名字改大一些,让它排在后面。
2、在settings->link->input的Objects/library modules中设置nafxcwd.lib LIBCMTD.lib,即指定库的顺序。也可以顺利编译。
总结一下:在发生缺省库冲突时,可以通过手工设置缺省库的顺序来解决,正确的顺序应该是:
MFC库、CRT动态链接版本的导入库、CRT静态库。
CRT是C RunTime库的缩写。
关于link过程更详细的介绍可以参见http://blog.csdn.net/soloist/archive/2005/09/30/493238.aspx,我从这篇文章中受益良多,感谢作者soloist。
- VC中缺省库冲突的解决
- VC中缺省库冲突的解决
- VC中缺省库冲突的解决 - fmddlmyy的专栏 - CSDNBlog
- VC++6.0和office2007的冲突解决
- VC缺省链接库的顺序不对导致链接错误
- SVN中冲突的解决
- SVN中冲突的解决
- svn中冲突的解决
- VS2010和VS2012在Microsoft.Cpp.Win32.user中设置VC++目录冲突的解决
- 解决JS库中$符号的冲突问题
- 关于VC link2005 重复定义,定义冲突的错误解决
- Git中代码冲突的解决方式
- ExpandableListview中 解决ImageButton冲突的问题。
- 解决团队中冲突的方法
- Eclipse中演示Git冲突的解决
- 解决 ASP.NET 中文本框上按回车时系统缺省提交按钮的问题
- vc 扩展dll中dlg的ID冲突的问题
- VC中引用第三方库,常见的库冲突问题
- 基于Visual Studio2010讲解C#4个新特性
- 精进不休 .NET 4.0 (2) - asp.net 4.0 新特性之url路由, 自定义CacheProvider, 新增的表达式<%: expression %>, QueryExtender控件, 其它新特性
- 获取Oracle数据库中的表名
- 基于Visual Studio2010讲解LINQ读出数据库数据生成XML
- 在windows xp下如何彻低卸载oracle
- VC中缺省库冲突的解决
- 从J2EE转向Android的第十二天 -----继续学习ListView
- HTML5的视频格式之争
- 一个基于jQuery ajax和.net httphandler 的超轻异步框架,千行代码完成。
- 为什么重写equals方法要重写hashCode方法
- 分布式文件存储的数据库开源项目MongoDB
- 明确C++风格的类型转换的用法
- 判断VC 6.0装了哪些补丁的一个简单方法
- 打造抵御 SQL注入攻击的MSSQL服务器