文章目录
- 1. 注释中有中文导致报错
- 2. 打开一个vs2013或者vs2010等老的项目兼容性
- 3. LNK2019 unresolved external symbol main referenced in function __tmainCRTStartup
- 4. image watch插件/扩展使用
1. 注释中有中文导致报错
C4819 The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss
很诡异的错误,如果使用了中文注释,则会先提示有不支持的字符,再来就是中文注释下面那行声明的变量会找不到,类似下图
解决
- 如果使用了中文注释,则C++代码要和中文注释之间要空一行,不然就会报错。
- 和代码同行的注释不会影响下一行代码
2. 打开一个vs2013或者vs2010等老的项目兼容性
可以直接用文本编辑器打开那个老版本的XXX.sln
文件
- 可以看到一些版本配置信息,类似:
Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 2013 VisualStudioVersion = 12.0.21005.1 MinimumVisualStudioVersion = 10.0.40219.1
感谢: VS2019 Choose Old Platform Toolset(ex.VS2013 v120,VS2010 v100) can not use some Properties->Property Pages setting(ex.Debugging,VC++ Directories,C/C++,Linker)
- 在用vs2019打开一个vs2013项目的
.sln
文件时,如果弹出一个提示框,说让你更新,一定选择不更新,不然这个项目会被卸载,因为环境不支持 - 如果不小心选错了,可以删除这个解决方案文件夹里的
.vs
的隐藏目录,再打开visual studio2019就会重新弹出对话框进行选择了
如下:
正确操作:
3. LNK2019 unresolved external symbol main referenced in function __tmainCRTStartup
LNK2019 unresolved external symbol main referenced in function __tmainCRTStartup test_MWMath I:\MwmathforScansys_x64\test_MWMath\MSVCRTD.lib(crtexe.obj) 1 LNK2019 unresolved external symbol main referenced in function __tmainCRTStartup XXXX_MSVCRTD.lib(crtexe.obj) 1
- 根据MSVCRTD.lib(crtexe.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup
- 报这个错是因为没有任何一个cpp文件中含有
main
这个入口函数
4. image watch插件/扩展使用
- Image Watch 2019
- Learn ->Previous Versions-> Visual Studio->Visual Studio 2015
- Image Watch: viewing in-memory images in the Visual Studio debugger
这个插件
- 主要是支持opencv的图像类型的,
cv::Mat
,cv::Mat_<>
,CvMat
,_IplImage
- 如果是
unsigned int *image
这样用原始的c数组表示的矩阵头指针,则需要转换一下变成opencv的Mat相关的类型才可以进行查看
具体使用
- visual studio上方工具栏,
扩展(X)
->管理扩展(M)
弹出下面的窗口,输入Image watch
点击等待即可 - 提示关闭visual studio后开始配置,关闭后就会显示以下界面,等着然后点
Modify
(也就是允许扩展对visual studio进行修改)
- 安装好之后,就可以在
视图(V)
->其他窗口
->Image watch
看到有这个插件选项了
- debug过程中,opencv的Image类型会有一个放大镜🔍一样的图标,点击就会提示让你在ImageWatch中查看。 opencv里的图像单通道mat一般是
CV_8U1
,也就是unsigned char类型