VS2010之各种编译器调试错误自我记录

本文记录了VS2010中遇到的各种编译和调试错误,包括MFC库链接错误、DLL加载失败、断点无效、缺少MSDN文档、并行配置问题、COM上下文转换失败等,并提供了相应的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.

事件:在非MFC环境中使用CStdioFile时,欲#include<afx.h>,提示链接错误如下

错误 1 error LNK2005: "void * __cdecl operator new[](unsigned int)" (??_U@YAPAXI@Z) 已经在 libcpmtd.lib(newaop.obj) 中定义 D:\Code_CSharp\Code_Airport\Code_Airport\uafxcwd.lib(afxmem.obj) Code_Airport

原因:搜了下可能是MFC相关类库与C++的类库include的顺序不对,然后造成某些符号提示重定义。

解决方法:将MFC的相关类库在程序最开始的位置包含。此处,我将<afx.h>放在最开始的位置包含,重编译即成功。


2. 

事件:在c#中想调用dll提示如下错误:“无法加载dll  异常来自HRESULT:0X8007007E”

原因:经过百度,了解到应该是我想import的dll还有其他依赖的dll,经过将其依赖的opencvdll打包放一起之后,该错误提示消失。


3.

事件:这是一系列常见错误了,老出现,就是各种windows自带的类型,如“CString,CRect等提示找不到符号”。

原因:其实是stdafx.h没有成功include,修改下就好。


4.

事件:VS2010中设置的断点无效:“当前不会命中断点,还没有为该文档加载任何符号”。

原因:折腾了一阵,其实问题主要出在没有生成调试信息。比较弱的错误是在Release下运行,肯定进不了断点,改成Debug就行;当然非得在Release下设置断点的话,可以通过下面的解决方法来搞。

解决方法:
(1)项目-〉属性-〉配置属性-〉C/C++-〉常规-〉调试信息格式,这里不能为“禁用”。
(2)项目-〉属性-〉配置属性-〉链接器-〉调试-〉生成调试信息,这里设为“是”。

5.

事件:VS2010安装时由于想省时间因此没有装MSDN,现在又想装MSDN。

解决方法:打开VS工作界面,帮助->管理帮助设置,在弹出的选择文件对话框中选择你当前需要将MSDN安装到哪里/路径;选择当前MSDN的案卷源文件,一般在你的ISO文件的ProductDocumentation目录下的HelpContentSetup.msha文件即可,以后程序会自动引导安装;同时,在安装之前,你还可以选择安装哪些帮助文档。


6.

事件:应用程序无法启动,因为应用程序的并行配置不正确。

原因:win7的64位系统缺少x86库文件。

解决方法:安装vcredist_x86


7.

事件:“mt.exe : general error c101008a: Failed to save the updated manifest to the file "./Debug/TransSliderControl.exe.embed.manifest"”vs编译过程中给出如上提示。

解决方法:清理解决方案,再重新生成。


8.

事件:CLR无法从COM 上下文0x645e18 转换为COM上下文0x645f88,这种状态已持续60秒2010-01-20 09:08异常信息:CLR无法从COM 上下文0x645e18 转换为COM上下文0x645f88,这种状态已持续60秒。拥有目标上下文/单元的线程很有可能执行的是非泵式等待或者在不发送 Windows 消息的情况下处理一个运行时间非常长的操作.这种情况通常会影响到性能,甚至可能导致应用程序不响应或者使用的内存随时间不断累积。要避免此问题,所有单线程单元(STA)线程都应使用泵式等待基元(如 CoWaitForMultipleHandles),并在运行时间很长的操作过程中定期发送消息


解决方法: 在Debug -> Exceptions -> Managed Debug Assistants里 去掉ContextSwitchDeadlock一项前面的钩。
在调试(菜单)-->异常--> Managed Debug Assistants里 去掉ContextSwitchDeadlock一项前面的钩。

9.

事件:可访问性不一致: 字段类型“a”比字段“b"的访问性低 
解决办法:在你的结构体或者是类,声明一下访问权限,修改成public,这样就不会有这些问题的存在。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值