如果给你一个vs的解决方案,默认的是release版的,让你弄出一个debug版本出来方便调试,你会发现,一个大的工程,绝对不会是讲release改为debug那么简单。
首先,改为debug后,要保证一些基本的库跟release版本是一致的,这样才能够保证编译时能够找到库文件,dll或者lib,有时候路径设置的不对,甚至连h或者cpp文件也找不到。
然后,是字符集和MFC使用的设置,一般都是多字符集,MFC跟release版本保持一致。当然有时候编译不通过的时候可以都试一下。
另外还有几个特别容易出错的地方,代码生成那里的基本运行时检查和运行时库,设置的不对也会导致大量的出错信息。
注意一下文件的输入输出目录,各个文件之间的调用关系。
下面说一下我今天遇到的错误还有解决方法吧。
error LNK2005: _calloc 已经在 libcmtd.lib(dbgheap.obj) 中定义 LIBCMT.lib
fatal error LNK1169: 找到一个或多个多重定义的符号
这种错误要在链接器—输入—忽略特定库中输入LIBCMT.lib。
error LNK2005: _DllMain@12 已经在 CyberGina.obj 中定义 mfcs80d.lib
fatal error LNK1169: 找到一个或多个多重定义的符号
我在预处理器—预处理定义—删除USEDLL解决了问题
error LNK2019: 无法解析的外部符号 _CIP_STREAM_OP,该符号在函数 “public: long………………中被引用
这种错误一般是库文件路径不对
链接器—输入—附加依赖库 保持跟release一致
error C2491: XXX: 不允许 dllimport 函数 的定义
c/c++ 预处理器 预处理定义 添加APICTRL_EXPORTS,网上多半是说加入DLLEXPORT,我试过了,对我来说不能解决。呵呵。
最后,如果提示找不到什么lib,dll一定要仔细检查设置的附加库啊,包含目录啊,依赖项,要保证路径正确,并且文件存在。