问题集合---《平时遇到的问题 + 参考解决方式》

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中都有这种情况出现,有些人可能会用下面两种方法中的一种:

    在程序代码的最后加上system("pause")或者getchar()。其实这是属于dos下的命令。
 
    其实问题是你执行时按的是F5,而正确的应该是Ctrl+F5,这样窗口就会显示 Press any key to continue...这句话了。也可以看到程序运行的结果了。
   因为,F5是Debugging模式,在这个模式下,当程序运行结束后,窗口不会继续保持打开状态。而Ctrl+F5是 Start Without Debugging模式,在这个模式下,就可以看到运行结果了。
 
   如果你按Ctrl+F5仍然是一闪而过的话,那么请按照如下设置:
   在工程上右键--->属性--->配置属性--->连接器--->系统--->子系统(在窗口右边)--->下拉框选择控制台(/SUBSYSTEM:CONSOLE)
就OK啦~  ”  @ https://blog.csdn.net/sinat_32829711/article/details/55213626
 
 
《vs2010  c++ 创建动态库DLL》遇到的问题:
参考(在Visual Studio中使用C++创建和使用DLL)https://blog.csdn.net/fightingforcv/article/details/4177339

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++)   //遍历图片的每一个像素点
        {
            .......
        }
    }    

 

posted on 2019-05-15 09:19  WP的烂笔头  阅读(277)  评论(0编辑  收藏  举报