问题集合---《平时遇到的问题 + 参考解决方式》
NO.1---@20190514 windows下,vs2010调试程序出现“Cannot find or open the PDB file”
可以参考:有解释说,上网查看原因,得知是程序输出的地方是Windows系统,而不是vs2010。
所以调试的话需要调用系统的一些资源,要到microsoft官网上下载,这样每次调试都比较耗费时间
(操作方法:Tools---Options---Debugging---Symbols, 将microsoft symbol servers 勾选上即可),因为每次调试会从官网下载符号服务文件吧。
解决办法,可以按control+F5直接运行,而且这样操作的话dos窗口就不会一闪而过了。
https://blog.csdn.net/envony/article/details/79820353
https://blog.csdn.net/win_turn/article/details/50468115
亲测:设置完事后,运行一次后,再勾选掉,好用。
NO.2---@20190514 windows下,vs2010,LINK:fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
可以参考,
https://blog.csdn.net/kevin_mqj/article/details/22981873
https://blog.csdn.net/iracer/article/details/51138135
第一步:将 项目——项目属性——配置属性——连接器——清单文件——嵌入清单 “是”改为“否”。若还不能解决问题进入第二步。
第二步:查看计算机是否为64bit操作系统,如是,继续如下操作。
查找是否有两个cvtres.exe。
C:\Program Files(x86)\Microsoft Visual Studio 10.0\vc\bin\cvtres.exe
C:\Windows\Microsoft.NET\Framework\v4.0.30319\cvtres.exe
右键属性—详细信息, 查看两者版本号,删除/重命名较旧的版本,或者重新设置Path变量。
亲测:
先删掉老版本的cvtres.exe,看是否能通。不能,则继续将新版本的cvtres.exe的粘贴过来。
NO.3---@20190528 Visual Studio控制台程序输出窗口一闪而过的解决方法
之前遇到类似的情况,解决了。今天手残你,用金山毒霸清理了一下垃圾,清空了,又出现这个问题。
如果出现调试窗口一闪而过的情况,会出现无法查看程序输出结果。
为了解决这个问题,可以在程序的末尾加上一个系统调用语句:
1 int main(){ 2 printf("我不会黑屏了哈哈\n"); 3 system("pause"); 4 return 0; 5 }
另转,“刚接触 Visual Studio的时候大多数人会写个Hello World的程序试一下,有的人会发现执行结束后输出窗口会一闪而过,并没有出现Press any key to continue的字样。无论是在Visual Studio 2008、2010还是2012中都有这种情况出现,有些人可能会用下面两种方法中的一种:
NO.4---@20190617 vs2010 c++ 创建动态库DLL,调用时 编译提示 找不到DLL?
NO.5---@20190617 vs2010 c++ 创建动态库DLL,创建XXX.def 文件编译报错?
NO.6---@20190617 vs2010 c++ 创建动态库DLL,创建XXX.def 文件编译报错?
参考解决@https://www.cnblogs.com/holyprince/p/4236586.html @https://blog.csdn.net/xk_snail/article/details/46757753 @https://blog.csdn.net/yuxiangsong/article/details/83016800
通过调用这个函数:
LoadLibrary出现的该问题。
原因 :工程只支持UNICODE字符
解决方法:
1、在解决方案资源管理器中的工程上右键属性->配置属性–>常规—>字符集---->使用多字节符字符集
2、说明,在VS2005以后的版本中默认是使用Unicode的,所以会出现很多以前版本没有的编译错误(实参与形参类型不匹配)。
NO.7---@20190617 vs2010 c++ 创建动态库DLL,错误:Error:未定义标识符"_TCHAR" ? 提示未定义标示符“printf” ?
原因:没有将必要的库或者头文件添加进来。
方法: 添加头文件 #include <tchar.h> #include<stdio.h> 即可成功编译
原文地址:http://blog.csdn.net/nemo2011/article/details/6744442
NO.8---@20190620 vs2010 遍历时报错OpenCV Error: Assertion failed <dims <=2 && data && <unsigned >i0 < <unsigned>size.p[0] && <unsigned >< i1,....?
参考启示:https://blog.csdn.net/sinat_36264666/article/details/77524628
最后参考解决:https://blog.csdn.net/cgf_909/article/details/43413421
问题在于:““”“这种错误的原因在于,访问构造矩阵时越界了,所以报错,例如:
cv::Mat mat1 = cv::Mat::zeros(480,640,CV_8UC1);
mat1.at<uchar>(481,643)
构造的mat1为640X480的矩阵,你却访问了643X481那就肯定会出错,所以在每次访问之前一定要 记得加上
if(i>=0 && i<mat1.cols && j>=0 && j< mat1.rows)
mat1.at<uchar>(j,i);
这样 就可以保证你访问的元素在这个行,列之内了。”“”
我的解决方法:
for (int i = 0; i < edgeImg.rows-1; i++) { for (int j = 0; j <edgeImg.cols-1; j++) //遍历图片的每一个像素点 { ....... } }