VC编译典型问题

vc 2015不能断点?

点击Configuration Properties->Debugging, Debugger Type的Script改成Auto。

add/remove operation is read only

原因:这个时候只要关闭工程,删除ncb文件和suo文件,打开工程,待Intellisesnce update完毕后,添加消息响应代码。

代码不能设置断点

 原因:是Release版本或者选中Require source files  to exactly match the original  version。

vc2005如何添加虚函数 

 原因:比如给对话框类CDesktopCapDlg添加虚函数PreTranslateMessage,先在“Class View”中选中CDesktopCapDlg,再到"Properties"打开“Overrides"。

ERROR LNK 2005

 原因: 全局变量重复定义,库版本冲突,比如:multi编码跟Uicode编码;/MD, /ML, /MT, /LD之间的冲突。

error LNK2011: precompiled object not linked in; image may not run

问题发生环境:A.exe 依赖B.lib,B.lib 依赖C.lib,B.lib 和C.lib 都是静态库。设置:A->B, B->C (->表示依赖),这种情况下,如果A/B/ C工程都在一个解决方案下,则没问题。如果将C工程移除,然后让B工程链接C.lib, (也就是A->B,B->C, A,B 在同一解决方案下,C则直接用静态库C.lib),则出现error LNK2011错误。解决方法:A->(B,C)------就是A直接链接到B.lib和C.lib,B最好在C的前面。

无法打开文件"LIBC.lib"

在“配置属性->链接器->输入->忽略特定库”后填入“LIBC.lib / libcp.lib ”。

MSVCRTD.lib(crtexew.obj) : error LNK2019: unresolved external symbol _WinMainX16 referenced in function ___tmainCRTStartup

你用vc建了一个控制台程序,它的入口函数应该是main, 而你使用了WinMain.解决方法:
如果入口函数是WinMain,

1.进入project->setting->c/c++, 在category中选择preprocessor,在processor definitions中删除_CONSOLE, 添加_WINDOWS

2.进入project->setting->Link, 在Project options中将 /subsystem:console改为/subsystem:windows.

3.保存设置,Rebuild All.

 vc Performing Custom Build Step 系统找不到指定的路径

缺少源文件夹。

Project : error PRJ0002 : Error result 31 returned from 'C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\mt.exe'.
解决方法:Properties ==> Configuration Properties ==> Linker ==> Manifest File, set Generate Manifest to No.

microsoft incremental linker已停止工作

解决办法:项目->属性->链接器->常规 下面的“启用增量链接”,将“是(/INCREMENTAL)”改为“否(/INCREMENTAL:NO)”。
不过这又引入了另外一个警 告:FormatCom.obj : warning LNK4075: 忽略“/EDITANDCONTINUE”(由于“/INCREMENTAL:NO”规范)
选择项目,属性->配置属性 ->C/C++,修改“调试信息格式”为“程序数据库(/Zi)”即可。

64位平台下,VC6调试运行程序,中断调试无法退出 .

问题描述:
当点击F5开始一个项目的调试时,程序在设置的断点处停止,这时按下Shift+F5后,vc6可以退出调试状态,但是WINDOWS系统的任务栏上会留下前面调试时产生的进程图标。该进程不能被结束,即使使用任务管理器,也不可以。这时如果再次按下F5调试,并按下Shift+F5后,任务栏上会留下两个这样的图标,这两个进程都可以在任务管理器上看到,不占CPU资源,但占用一定的内存。结束该进程的唯一的办法是(在任务栏上去掉该图标):关闭VC6,并重新开启.
一般的解决方法:
不使用"结束调试"这个功能,让程序正常结束(就是放个可以退出的菜单或者按钮, 而不是使用Shift+F5的退出)。
终极解决方法:
替换DM.dll和TLLOC.DLL为正确的版本。首先下载正确版本:VC6.zip(里面包含这两个dll,地址为:http://download.csdn.net/detail/evsqiezi/6518315),然后将下载的版本替换到程序安装目录“Common/MSDev98/Bin/TLLOC.dll”和“Common/MSDev98/Bin/DM.dll”,这样VC6在windows 7 64位的系统调试时,就可以任意退出了。

vc2008下,Microsoft(R) C/C++ 优化编译器 遇到问题需要关闭的解决办法

         编译的语句有问题,如: printf("Connect suc ip:%s,Handle:%d\n",a(int 型),b(char*型));就会导致此类问题。经过最新测试发现:原来是VC8(VS2005)的项目默认属性有开/Wp64 (检测64位可移植性问题),在VC9(VS2008)下面,如果仍然打开/Wp64编译选项,那么遇到上述这种代码编译器就会崩溃,如果在项目属性里禁止"检测64位可移植性问题"(/Wp64 )这个选项,则编译就可以正常通过,编译器不会崩溃。不过代码写的也有问题,优先改代码。

error C3163: “_vsnprintf”: 属性与以前的声明不一致   //2013 12

_vsnprintf被重复定义。

error LNK2005: _DllMain@12 已经在 MSVCRTD.lib(dllmain.obj) 中定义

_DllMain@12 已经在 MSVCRTD.lib(dllmain.obj) 中定义
  VC2005解决办法:
1)Debug版本:
项目-属性-链接器-输入:忽略特定库中输入mfc80d.lib;mfcs80d.lib
项目-属性-链接器-附加依赖项:mfc80d.lib;mfcs80d.lib
  就可以保证mfc80d和mfcs80d先于MSVCRTD.lib链接,OK,成功
2)Release版本
  与Debug版本不同在于mfc80.lib;mfcs80.lib

warning LNK4070: .EXP 中的 /OUT:WebCamAdapter.dll 指令与输出文件名“W

修改输出文件的文件名,需要在.def文件里也改名字,否则不识别生成的DLL。

ossl_typ.h(178) : error C2143: 语法错误 : 缺少“)”(在“常量”的前面)

定义的变量跟宏重名了,修改即可。

msvcrtd.lib(crtexe.obj) : error LNK2001: unresolved external symbol _main
原因:控制台在DMD下没写main函数。

 error C2061: syntax error : identifier 'HMONITOR'

#ifndef WINVER           
#define WINVER 0x0500       
#endif
#define _WIN32_WINDOWS  0x0500
#define _WIN32_WINNT    0x0500

linux expected initializer before ‘class’

一般是前面语法错误,如少分号。

项目文件包含 ToolsVersion="12.0" 设置,但此工具集未知或缺失。您可以通过为此工具集安装相应的 .NET Framework 来解决此问题。将项目视为具有 ToolsVersion="4.0" 设置。

工程跟VS版本不符合,在“属性”->“平台工作集”,改成当前的VS版本。

error LNK2038 RuntimeLibrary 不匹配的解决

在工程上右键-》属性-》c/c++-》代码生成-》运行库,修改即可,因为所选的工程运行库选择错误导致的。

一次艰难的编译。

编译的公司的代码,在别人的机器上能编过,在我的机器上编不过,费了老大劲,终于编过,记录下过程,希望以后能吸取经验。
代码量很大,要装VC,INTEL编译器,soncs,perl。
先后出现的问题有:
1 软件装不上
  1>INTEL安装要先认证,有次一直不能认真,后来发现是认证服务器异常。
  2>装的版本不对,后来发现是版本不匹配,决定全部采用公司推荐的版本。

2 fatal error C1083: Cannot open include file "stdlib.h"。
       这个头文件是常用的,只能说明VC没装好,或者SONCS解析的不对。之后VC全选重装了一次,发现所在的目录还是没有,只好从另外的机器靠过来。

3 重装VC后,编译提示 error C2220: warning treated as error - no 'object' file generated。
      错误前面是个CL编译,网上的解释都说编译的参数不对。觉的可能是SCONS没装好,导致解析的不对,重装SCONS后,还是提示此问题。
      重装VC后还是提示此问题。同事让改了本机语言后,重启机器,执行set LC_ALL=C,还是提示此问题。
      后来发现TXT能存中文,而能编过的机器不能存,觉得还是跟语言有关,选“current system locale”为“English(United States)” ,还是提示此问题, 但txt也不能存中文了。
      觉得可能是语言设置导致安装异常,重装了VC,SCONS,又提示新的问题,"windows kits\10\include\10.0.10586.0\urt\corecrt.h(128):error C2953 '_CrtEnableIf<true,_Ty>': class template has already  been defined"

解决办法: 删除10.0.10240的include ,lib,source,重新编译即可。

 

 

终于编译通过。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山西茄子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值