Visual Studio问题集锦by低调年华,未完待续

更新时间:2023-12-21 01:08:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

问题集锦

vs2013的安装需要网络接入,否则安装后部分功能无法使用! 1. error MSB: 3073,已退出,代码1

解决方法:项目属性,生成事件,后期生成事件,命令行(改为默认即可) 2. VS2010显示行号

解决方法:工具,选项,文本编辑器,C/C++,自动换行,行号。 3. error LNK 1120:无法解析的外部命令

解决方法:这个问题的原因是有头文件,但是找不到实现。

1)只包含了头文件,只有这个函数的声明,没有包含这个函数的实现(实现一般放在cpp文件中的)。所以只能通过编译,连接不成功。

2)另一个原因是函数的声明和实现都放在头文件中了,一般要把声明放头文件中,实现放在cpp文件中。这样每个#include该头文件的文件都会有一份该函数的实现,连接的时候,连接器不知道连接哪一个实现,于是报错。 4. error LNK 2019:无法解析的外部符号 原因:lib库可能无法匹配,更换lib库即可。 5. 关于无法解析的外部命令的所有可能原因 考虑可能的原因

[0]出现无法解析可能是因为lib文件不正确,比如64位的编译配置,结果使用的是32位的lib包.

[1]只写了类声明,但还没有写实现类,造成调用时无法解析 [2]声明和定义没有统一,造成链接不一致,无法解析 [3]没有在项目属性页的链接器的命令行选项加入相应的类包。 [4]没有在c++包含目录和库目录加入相应的类包路径

[5]在测试工程中被测文件目录可能需要包含被测类的cpp定义文件

[6]ICE接口测试时,无法解析可能因为被测文件没有包含进相关的cpp文件,另外,在TestSuite_ProjectRun.h文件中需要包含IProjectRun.h头文件,及相关的头文件(举例)。 [7]import相关的无法解析内容,解决办法是在链接器的依赖项中加入相应的动态库 [8]出现如下错误的原因一般是动态库没有包进来。__imp

ProjectRun.obj : error LNK2019: 无法解析的外部符号 __imp__StartHistoryLocalModule,该符号在函数 \virtual int __thiscall HiRTDB::CProjectRun::DoStart(void)\(?DoStart@CProjectRun@HiRTDB@@MAEHXZ) 中被引用 [9]error LNK2001: 无法解析的外部符号 __imp___CrtDbgReportW 工程属性,C/C++,代码生成,运行时库选择MDd,

[10]无法解析的外部符号\HiRTDB::CTagTree::GetObjectA(int,struct HiRTDB::SBaseReadValues

public:

int

__thiscall &,struct

&)\

HiRTDB::SBaseReadProps const

(__imp_?GetObjectA@CTagTree@HiRTDB@@QAEHHABUSBaseReadProps@2@AAUSBaseReadValues@2@@Z),该符号在函数\int __thiscall HiRTDB::CStringImpl::Get(int,struct HiRTDB::SStringReadProps

const

&,struct

HiRTDB::SStringReadValues

&)\

(?Get@CStringImpl@HiRTDB@@QAEHHABUSStringReadProps@2@AAUSStringReadValues@2@@Z) 中被引用

原因可能是工程配置文件中有多余选项,请参考其他模块的配置选项,不要有多余配置。 6. 参数basepath不能是相对路径

解决方法:basePath不能是相对路径,在项目->配置属性->调试->中,将命令和工作目录改为绝对路径。这里将其改为默认即可。

7. 应用程序无法正常启动,(代码0xc0150002)

解决方法:缺少此应用程序所需动态库的VC++运行库,安装对应的VC++运行库即可。

8. error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏

我已经将项目\\属性\\配置属性\\清单工具\\输入和输出\\嵌入清单:原来是“是”,改成“否”,但是还是不行,这是为什么?

我以前是VS 2010,自从我装了VS2012之后就出现了这个问题,现在VS 2012已经卸载掉了,但还是不行。 解决方案:

VS2010在经历一些更新后,建立Win32 Console Project时会出“error LNK1123”错误,解决方案为将项目|项目属性|配置属性|清单工具|输入和输出|嵌入清单“是”改为“否”即可,但是没新建一个项目都要这样设置一次。

在建立VS2010 Win32 Project项目时,按照上面解决方案依然发生了“error LNK1123”错误,经过上网查资料,解决方案为: 第一步:与上相同。

第二步:将项目|项目属性|配置属性|连接器|清单文件|嵌入清单“是”改为“否”。

第三步:一般计算机经过上两步设置就能解决问题了,但是如果还有问题,那就按一下方法解决:

计算机是否为64bit操作系统,如是,继续。

查找是否有两个cvtres.exe。一个是C:\\Program Files(x86)\\Microsoft Visual Studio 10.0\\vc\\bin\\cvtres.exe,另一个是C:\\Windows\\Microsoft.NET\\Framework\\v

4.0.30319\\cvtres.exe。右键属性|详细信息查看两者版本号,删除/重命名较旧的版本,或者重新设置Path变量。

意外的是,治本的办法是第三步,删除旧版本的cvtres.exe后,就不需要每次都设置配置了。 9. Error MSB8031

Building an MFC project for a non-Unicode character set is deprecated. You must change the project property to Unicode or download an additional library.

实际上是VS2013把 multi-byte character set (多字节)支持移除。需要安装vc_mbcsmfc.exe

补丁。

10. fatal error C1083: 无法打开包括文件

步骤1:定位报“fatal error C1083:”错误的文件,找到它所在的目录。 步骤2:添加该项目的附加路径。如图所示: 1)右键查看该项目的属性

2)点击配置属性——〉 C/C++ ——〉常规——〉附加包含目录——〉将报错文件所在目录添加进去

3)将项目的本地路径替换为工程相对路径 工程根目录为:$(ProjectDir) 其子目录inc为:$(ProjectDir)inc 4)点击“确定”按钮。

步骤3:重新编译生成,问题可以得到有效解决。

11. 因串口API函数用到了多字节字符集,导致对话框界面风格win2003样式

问题在stdafx.h中。

看这个文件中是否有

1. #ifdef_UNICODE 2.

3. #if defined _M_IX86 4.

5. #pragmacomment(linker,\manifestdependency:\\\32'

name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\\\)

6.

name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='ia64' publicKeyToken='6595b64144ccf1df' language='*'\\\)

7. #elifdefined_M_IA64 8.

9. #pragmacomment(linker,\manifestdependency:\\\32'

10.

name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\\\)

11. #elifdefined_M_X64 12.

13. #pragmacomment(linker,\manifestdependency:\\\32'

14.

name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\\\)

15. #else 16.

17. #pragmacomment(linker,\manifestdependency:\\\32'

18.

如果有,还是界面风格不正确,那么上面的代码去掉#ifdef _UNICODE宏。 一般都是由于你的程序环境使用的是多字符集造成的。

12. Run-Time Check Failure #3 - The variable 'comstat' is being used without being

initialized

19. #endif 20.

21. #endif

方案1: 改变项目配置属性

一种解决方案是改变基本运行时检查(changing the runtime checks in project settings):在菜单Project->Project properties-> C/C++ -> Code generation-> Basic Runtime checks --> change to 'Default',在中文版中是:项目-〉属性-〉配置属性-〉C/C++代码生成-〉基本运行时检查-〉设置为默认,当将基本运行时检查改为默认之后,编译自然顺利通过了,向串口调试助手发送消息正常了,再从串口调试助手向SerialPortTest发送消息时,也正常了。

方案2:改变comstat变量属性

另一种解决方案是将CSerialPort.CPP中的COMSTAT comstat;改为static COMSTAT comstat;这样改了之后,debug顺利通过,然后调试,与串口调试助手相互发消息都OK了。为什么这样就能解决呢?其实当你使用debug解决方案时,它的基本运行时检查初始设置为:两者(/RTC1,等同于 /RTCsu),这个两者是指:堆栈帧(/RTCs),未初始化的变量(/RTCu)。由于它要检查未初始化的变量,所以将SerialPort.cpp中的COMSTAT comstat;改为static COMSTAT comstat;就可以正常使用CSerialPort类了。

以上是在debug下的解决方案,当在Release编译状态时,你会发现并不需要将COMSTAT comstat;改为static COMSTAT comstat;就能编译成功并且发送接收消息正常。其实,在Release下,它的基本运行时检查初始设置已为默认。这应该也算是第一种解决方案之内。

而当你将它设置为两者(/RTC1,等同于 /RTCsu)时,不论是否将COMSTAT comstat;改为static COMSTAT comstat;,编译都不能通过,报错““cl.exe”返回的结果有误。\,这个应该是属于Release的问题了,另当别论了。

方案3:

添加代码:memset(&comstat, 0, sizeof(COMSTAT)); //VC6不用这句也可以用,2008就要加

13. 不支持尝试执行的操作 dlgdata.cpp line 40 断言失败

注意:删除控件前,先取消对控件的变量绑定,然后再删除控件。 14. 问题事件名称: APPCRASH 应用程序名: InDesign.exe 应用程序版本: 9.0.0.244 应用程序时间戳: 5176f4c7 故障模块名称: MSVCR100.dll 故障模块版本: 10.0.40219.325 故障模块时间戳: 4df2bcac 异常代码: 40000015 异常偏移: 00000000000761c9 OS 版本: 6.1.7601.2.1.0.256.1 区域设置 ID: 2052

其他信息 1: 6bc2

其他信息 2: 6bc2302ebd14cb68acdfe8af49d985f0 其他信息 3: 0b52

其他信息 4: 0b52796ce0e6fdef48c50d5140ca6b51

今天网查了半天不晓得这个方法是可行:到下面下载window版本的 CopyPlugins_Win.zip http://pan.http://www.wodefanwen.com//s/19VUH0 1、替换 Character Panel.apln

X:\\Program Files\\Adobe\\Adobe InDesign CC (64 bit)\\Plug-Ins\\Text\\Character Panel.apln 2、(关键点)替换 Font Manager.rpln

X:\\Program Files\\Adobe\\Adobe InDesign CC (64 bit)\\Required\\Font Manager.rpln 这样问题就解决了。真正的解决了!!!!

本文来源:https://www.bwwdw.com/article/83b5.html

Top