无法查找或打开 PDB 文件和VS新建工程头文件链接不上的问题解决方法

vs2015+openCV(x64)出现运行时”无法查找或打开 PDB 文件”问题 最近数字图像处理课程需要用到VS+openCV库,配置环境过程中遇到一些了问题,在这里总结下,希望看到的以后能少走弯路。 阅读详情

在跑别人的C++工程的时候,遇到了这个问题

“ConsoleApplication1.exe”(Win32): 已加载“C:\Users\PC\source\repos\ConsoleApplication1\Debug\ConsoleApplication1.exe”。已加载符号。
“ConsoleApplication1.exe”(Win32): 已加载“C:\Windows\SysWOW64\ntdll.dll”。已加载符号。
“ConsoleApplication1.exe”(Win32): 已加载“C:\Windows\SysWOW64\kernel32.dll”。已加载符号。
“ConsoleApplication1.exe”(Win32): 已加载“C:\Windows\SysWOW64\KernelBase.dll”。已加载符号。
“ConsoleApplication1.exe”(Win32): 已加载“C:\Windows\SysWOW64\apphelp.dll”。无法查找或打开 PDB 文件。
“ConsoleApplication1.exe”(Win32): 已加载“C:\Windows\SysWOW64\msvcp140d.dll”。已加载符号。
“ConsoleApplication1.exe”(Win32): 已加载“C:\Windows\SysWOW64\vcruntime140d.dll”。无法查找或打开 PDB 文件。
“ConsoleApplication1.exe”(Win32): 已加载“C:\Windows\SysWOW64\ucrtbased.dll”。无法查找或打开 PDB 文件。
“ConsoleApplication1.exe”(Win32): 已卸载“C:\Windows\SysWOW64\ucrtbased.dll”
“ConsoleApplication1.exe”(Win32): 已加载“C:\Windows\SysWOW64\ucrtbased.dll”。无法查找或打开 PDB 文件。
线程 0x4844 已退出,返回值为 0 (0x0)。
线程 0x405c 已退出,返回值为 0 (0x0)。
线程 0x3130 已退出,返回值为 0 (0x0)。
程序“[328] ConsoleApplication1.exe”已退出,返回值为 0 (0x0)。

看了一些博客教程,大都是去调试打开一个选项,对问题本身治标不治本,比如

所以写了一下这个回答,希望对遇到相同问题的人能有所帮助

先说一下PDB文件是什么

当程序在 VS 上编译时,程序所依赖的所有动态链接库(dll 文件)也会被编译,编译过程中每个 dll 都会产生一个pdb文件,又称为“符号文件”,是一个存储数据的信息文件,其包含 dll 库在编译过程的某些调试信息,例如程序中所用到的全局变量、局部变量、函数名以及他们的入口地址等。

pdb 文件主要用于调试程序,多用于当VS中有多个项目,且项目之间互有依赖关系时,使用pdb文件调试程序,往往会事半功倍,初学者一般不会用到。

当使用VS 调试程序时,会默认加载你的程序以及程序依赖的dll库产生的所有pdb文件,但是结果往往是VS自己找不到依赖库的pdb文件,于是就提示给你“无法查找或打开pdb文件”。

参考http://c.biancheng.net/view/474.html

除了这个问题外,还有可能会存在VS版本不对、使用了的库路径不对等问题导致编译别人的项目不通过。

建议直接新建一个自己的工程,然后把.h和.cpp文件添加到自己的工程里。

 wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==​ 

然而在建新工程后,发现编译报错

 wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==​ 

明明已经在头文件中include却链接不上的

这是因为VS的预编译头所致的,VS15前预编译头是stdafx.h,17之后是pch.h

使用预编译头

  stdafx.h并不是标准C++头文件,也就是说,该文件本质上相当于自定义的一个头文件( 这里是VS默认自定义的文件),与项目的源代码文件存放在同一个文件文件夹下,通过#include"stdafx.h"引用;

  从内容上来说,头文件stdafx.h中可以包含

  1.标准系统包含文件

  2.经常使用的但不常更改的特定于项目的包含文件

  标准系统包含文件 : 即常用的与C标准库对应的头文件,如标准输入头文件stdio.h、字符串头文件string.h等文件。

  自定义的包含文件 : 即用户根据项目需要自定义的头文件。

  在使用头文件 stdafx.h 时,将所有源程序中所需的包含文件( .h 文件 )都包含在头文件stdafx.h中,具体的做法就是将原本各个文件中所需要的类似于#include<stdio.h>的头文件包含语句都存放在头文件stdfax.h中,之后各个单独的文件中不需要再对存在于stdafx.h中的头文件进行单独声明,而只需要包含有头文件stdafx.h即可。

    #include"stdafx.h"  //通过该语句包含头文件stdafx.h,该语句需放在每个源文件文件的开头,否则会报错

  同时,stdafx.h也可以存放内容改动较少的自定义的头文件。

  相应的,源文件stdafx.cpp中内容仅包含以下语句

  #include "stdafx.h" //事实上,stdfax.cpp只用于编译头文件stdafx.h中包含的所有内容

  事实上,stdafx.cpp只用于编译头文件stdafx.h中包含的所有内容

 

参考https://www.cnblogs.com/yhjoker/p/8110684.html

VS这点很难受,应该把预编译头放在第一个,就可以解决问题

 wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==​ 

或者在新建项目的时候注意,选择空项目即可。

 wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==​ 

 没想到这个#include "pch.h"位置还有讲究...折腾了一会

重拾VS C编程出现的错误及解决方案 C++编程问题总结: 问题 “ConsoleApplication1.exe”(Win32): 已加载“C:\Users\Administrator\Documents\Visual Studio 2013\Projects\ConsoleApplication1\Debug\ConsoleApplication1.exe”。已加载符号。“ConsoleApplication1.exe”(Win32): 已 阅读详情

相关推荐

vs编译出现未加载 wntdll.pdb

今天在编写程序的时候在编译的过程中出现了一个对话框提示程序已经出现一个断点,然后跳转界面提示未加载 wntdll.pdb,或者说很多vs版本在编译的时候经常会出现 无法查找或打开 PDB 文件。 “ConsoleApplication1.exe”(Win32): 已加载“C:\Windows\SysWOW64\ntdll.dll”。无法查找或打开 PDB 文件。 “ConsoleApplic

Hanani_Jia的博客 5万+

VS联网加载系统库的符号链接文件PDB方法

报错如下: “ConsoleApplication1.exe”(Win32): 已加载“C:\Windows\SysWOW64\KernelBase.dll”。没法查找或打开 PDB 文件 解决方法: 一、点 调试 – 选项 二、右边勾上 启用源服务器支持 三、选择 “符号”,把微软符号服务器勾选 四、选择"确定",然后运行联网加载系统PDB符号文件。 ...

qq_23350817的博客 1145

错误 1error LNK1207 PDB 格式不兼容;请删除并重新生成

最近遇到一个问题。在实验室用vs2005作了作业,打包带回来之后,用vs2013打开,然后就出现了如下错误。 错误 1 error LNK1207: “F:\vsproject\project\课本\大一_1\eg5_10\Debug\eg5_10.pdb”中的 PDB 格式不兼容;请删除并重新生成 F:\vsproject\project\课本\大一_1\eg5_10\eg5_10\LIN

gzhu_wzb 2万+

c++遇到无法打开PDB文件该怎么解决?

“Project2.exe”(Win32): 已加载“D:\c++\Project2\Debug\Project2.exe”。已加载符号。 “Project2.exe”(Win32): 已加载“C:\Windows\SysWOW64\ntdll.dll”。无法查找或打开 PDB 文件。 “Project2.exe”(Win32): 已加载“C:\Windows\SysWOW64\kernel32.dll”。无法查找或打开 PDB 文件。 “Project2.exe”(Win32): 已加载“C:\Windo

shenbossed的博客 5285

VS2017的C++开发心得(八)DLL动态链接——Opencv的使用

上一篇对dll的链接使用进行了粗略介绍,这一篇就以Opencv为例子介绍下怎么使用第三方库来进行程序开发。Opencv是世界机器视觉领域非常著名的开源库,里面包含了大量的图形处理算法,变换算法,匹配算法,也包括现在流行的DNN深度学习网络应用。Opencv的强大更在于它的整个库对用Opencl和CUDA的支持非常好,同样的算法,你自己写的运行速度基本没法跟Opencv的运行速度比较。 首先去官网...

luoyu510183的博客 6576

pcl1.8.0+vs2015配置安装【小白入门与遇到过的问题解决】

以下为安装注意事项: 1.安装在默认位置即可,不然props文件需要修改。 2. 在安装PCL一键安装包时,勾选上Add PCL to system PATH for all users。安装过程中,会弹出OpenNI的安装程序,更改OpenNI的安装路径为你安装的PCL路径下的3rdParty文件夹下的OpenNI2文件夹中。

annabelle1130的博客 1万+

如何用VS调试不属于解决方案的EXE和DLL程序-使用PDB和EXE文件-根据exe|pdb|源码文件进行调试分析

可以新建一个空文件夹,比如VS_DEBUG\curlSrc, 项目名称比如说curlSrc, 然后将文件从这些文件夹添加到项目中,确保所有你写的CPP和H文件都在这个目录(这些源代码文件只是会被引入项目, 但不会拷贝到VS_DEBUG\curlSrc目录下, 也就意味着你仍然可以随时修改代码并用NMAKE构建而不必担心代码在VS中更新的问题)。如果你手里有一个现成的EXE, 以及EXE相关联PDB文件, 还有相关联的CPP文件和H文件. 你如何用VS调试?把PDB文件的路径添加进去并打勾即可。

插件开发 1151

VS2015/2017调用matlab编译生成的DLL环境配置及编程要点

最近在用VS调用matlab生成的神经网络库的时候,遇到了各种各样的环境问题。通过不断尝试,总结出整个流程。本着分享的原则,整理出来,也方便自己以后学习。首先关于matlab如何打包库文件请看这篇文章,关于如何打包训练好的神经网络,请看这篇文章。 实验环境 操作系统:windows10 C++ IDE:Visual Studio 2015(VS2017同样适用,只要不高于matlab版本即可) 配置过程 1 打开VS2015新建win32控制台应用程序,例如命名为“example”,右键项目,点击“属性”。

lsjiebaobao的博客 1892

解决visual studio 2010下warning LNK4099 PDB vc100.pdb was not found问题

编者:李国帅 qq:9611153 微信lgs9611153 时间:2018-2-7 问题描述及期望效果: 以前用visual studio 2008时也碰到过类似问题, 问题产生的原因就是由于一个Solution下单多个Project是分开编译的,主项目和子项目的pdb文件名相同(默认都是vc90.pdb或vc100.pdb)从而造成冲突。这个问题对程序的执行不会产生影响,但会导致丢失部分调试信息。 网上方法: 在网上搜到解决办法,修改pdb文件设置的路径和名称。转贴于此。 ...

lgs7907 1123

visual studio第一次调试遇到的问题

提示 已加载“C:\Windows\SysWOW64\ntdll.dll”。无法查找或打开 PDB 文件。 “Win32Project3.exe”(Win32): 已加载“D:\software\VS2013\VS2013 文档\Win32Project3\Debug\Win32Project3.exe”。已加载符号。 “Win32Project3.exe”(Win32): 已加载“C:\W...

syqnyue的博客 1402

ConsoleApplication1.exe

用于测试1200000000次空循环所花的时间

visual C++ 项目和解决方案的区别

项目:         项目是构成某个程序的全部组件的容器,该程序可能是控制台程序、基于窗口的程序或某种别的程序。程序通常由一个或多个包含用户代码的源文件,可能还要加上包含其它辅助数据的文件组成。某个项目的所有文件都存储在相应的项目文件夹中,关于该项目的详细信息存储在一个扩展名为.vcproj的xml文件中,该文件同样存储在相应的项目文件夹中。项目文件夹还包括其它文件夹,它们用来存储编译及链接项

5680

sdc时钟约束2——多驱动时钟

sdc 多驱动时钟 master_clock

qq_40411444的博客 5529

Vsiual Studio2017无法打开或新建文件,improt声明中的路径报错(非攻略..)

背景: 电脑先安装了VS2010,可以很顺利的使用,后来因为一些原因卸载了,再安装之后就无法生成新文件,也无法打开文件,而且都会出现如下提示: D:\xxxx\xxxx.vcxproj : error : 无法读取项目文件“xxxx.csproj”。 D:\xxxx\xxxx.vcxproj( ): 未找到导入的项目“C:…..\xxxx.props”。请确认 import 声明中的路径正...

weixin_41790566的博客 1788

硬件单板类机考复习提纲

6、 功率晶体管低导通损耗时处于的状态(饱和状态、放大状态、截止状态)(放大器的采样频率特性)总结:元器件特性(电阻、电容、二极管、三极管、晶体、晶振、MOS、磁珠等)信号质量问题产生根因(单调性、边沿过缓、毛刺、回沟、抖动等)3、 几种电容容量范围大小(超级电容、钽电容、陶瓷电容、铝电容)66、背板连接器接触设计的接触顺序(先导向、再地针、最后信号针)28、逻辑电平接口的特性(CMOS、TTL、ECL、PECL)76、差分电平(lvpecl、RS-422/485、cml)

2303_79562407的博客 1万+

软件缺陷(定义+表现形式+优先级+信息+产生原因),看完这篇文章就懂了

软件缺陷软件缺陷的定义软件缺陷的表现形式软件缺陷产生的原因软件缺陷的根源软件缺陷的费用软件缺陷的信息 软件缺陷的定义 IEEE 1983 of IEEE Stardard 729中软件缺陷做了一个标准的定义: 从产品内部看,软件缺陷是软件产品开发或维护过程中所存在的错误、毛病等各种问题;从外部看,软件缺陷是系统所需要实现的某种功能的失效或违背。 因此软件缺陷就是软件产品中所存在的问题,最终表现为用户所需要的功能没有完全实现,没有满足用户的需求。 缺陷不是bug,缺陷包含bug,缺陷的范围更大。 软件缺陷

qq_40676418的博客 1万+

VS项目各种文件说明

一、sln文件 .sln(Solution)解决方案文件,表示一个项目组,他通常包含一个项目中所有的工程文件信息。 二、suo文件 suo(Solution User Options)解决方案用户选项文件,记录所有与解决方案建立关联的选项,以便在每次打开时,它都包含用户所做的自定义设置。.suo文件偶尔会被破坏,从而在构建和编辑应用程序时出现意想不到的结果。如果Visual Studio对于每个解决方案不稳定,就应删除.suo文件。下次打开解决方案时,Visual Studio会重建它。实际上在使用TF

qq_43128070的博客 4063

基于深度学习的三维重建算法——详解与实现

随着深度学习技术的迅猛发展,基于深度学习的三维重建算法在最近几年取得了显著的进展。而基于深度学习的三维重建算法通过利用深度神经网络,能够从大规模数据中学习到更准确、鲁棒的三维结构表示。本文综述了基于深度学习的三维重建算法,并给出了相应的源代码。随着深度学习技术的不断发展,我们相信基于深度学习的三维重建算法将会在未来得到更广泛的应用。实验结果表明,基于深度学习的三维重建算法在准确性和鲁棒性方面取得了显著的提升。以上是关于基于深度学习的三维重建算法的详细介绍与实现,希望对您有所帮助。

CyberGenius的博客 1227

【持续更新】vs 编译过程中的问题及其解决方案

独立寒秋,湘江北去,橘子洲头。

Flying Bulldog 的博客 1059

EtherCAT总线运动控制学习笔记(RXXW_Dor)

说到总线控制,就要说到报文、对象字典、PN通信我们大部分会说报文,EtherCAT通信我们常说对象字典,叫法不一样,但是原理基本一致,下面我们简单认识下上面是对象字典。

RXXW_Dor的博客 5428

论文阅读:arixv 2025 Poisoning Attacks on LLMs Require a Near-constant Number of Poison Samples

研究者做了目前最大规模的“投毒实验”,训练了从6亿参数到130亿参数的模型(覆盖了中小到大型LLM),用的训练数据量也是“最适合模型大小”的(按行业里的“Chinchilla法则”,模型越大,训练数据量也按比例增加)。总结下来就是:这篇论文告诉我们,给大语言模型投毒,比之前想的容易得多——不需要海量毒数据,只要几百条藏好后门的文档,就能让大模型“带毒工作”,而且平时还看不出来。——这比之前大家担心的“需要投毒数据占训练集一定比例”要可怕得多,因为对大模型来说,“固定数量”的毒数据更容易偷偷塞进去。

CSPhD-winston的博客 1080

VS2015编译器问题简单记录整理

来源1:https://www.cnblogs.com/youyoui/p/5720719.html 来源2:https://blog.youkuaiyun.com/Carl_Qi/article/details/51171280#commentBox 问题:VS2015安装后stdio.h ucrtd.lib等文件无法识别问题,即include+lib环境变量配置 今天突然想在windows上装...

林下的码路 1111

危废焚烧优化控制系统设计与实现:基于数据驱动的控制参数预测

本文提出了一种基于数据驱动的危险废物焚烧过程优化控制方法。系统利用历史运行数据和实时监测数据,通过深度学习模型预测关键控制参数,实现焚烧过程的智能化控制。系统采用Python开发,结合TensorFlow/PyTorch框架,构建了完整的数据采集、预处理、特征工程、模型训练和实时预测闭环系统。该系统能够处理多变量非线性关系,适应工况变化,从历史数据中学习最优控制策略,相比传统PID控制方法具有显著优势。论文详细介绍了系统架构、算法设计和实现细节,为危废焚烧过程的优化控制提供了有效解决方案。

huanghm88的专栏 206

学习记录:vs2017+qt5关于QAxObject读取excel中数据问题

论坛里面很多教程,按照教程来一步一步搞也有很多问题,下面记录一下。 一、无法打开源文件"QAxObject" 解决办法: 办法1.头文件换成:#include<ActiveQt/QAxObject> 办法2.在项目->属性->Qt Project Setting->QT modules勾选 ActiveQt Container 二、 头文件没问题后,编译也通过了,然...

qq_43153866的博客 2865

【AI Agent系列】【阿里AgentScope框架】深入源码:Msg是如何转变成模型需要的Prompt形式的?多模态Prompt如何构建?

前面咱们学习AgentScope,在使用Agent来对话时,输入为一个 Msg 对象,不能是字符串,然后在Agent内部,会将Msg对象转换为模型接受的Prompt。那 AgentScope 如何根据 Msg 形成相应模型接收的Prompt结构的?如何使用 Msg 带入更多的参数,传递给大模型呢?

同学小张的博客 1533

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

上一篇: 非线性最小二乘问题理解(包括最速下降法、牛顿法、线搜索法、置信区间法和阻尼法等)
下一篇: Cartographer编译方法及编译出错(glog库链接错误)解决方法
文锦渡
博客等级 码龄11年 122粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

文锦渡

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

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

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

打赏作者

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

抵扣说明:

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

余额充值