今天调试昨天从网上找的c语言指纹识别代码,首先在电脑安装上Visual Studio 2010,新建工程,把指纹识别的代码移植到VS上,因为从网上找的代码是在Linux下编译的,要把它移植到VS上来,建立好工程后,出现了一些bug,一直改,今天主要解决了以下问题:
1.刚进入Visual Studio软件,会让你选择默认环境设置,C#、C++、F#、VB等,这个信息用于对不同的语言配置不同的开发环境,如果后边需要更改开发语言,选择“工具”—导入和导出设置—重置所有设置;
2.打开Visual Studio软件时,出现如下图错误,解决方法:打开visual studio 2010命令提示符,输入devenv /log;另外查阅网上资料,也可以按照错误提示的路径找到 ActivityLog.xml 文件,具体问题具体分析;
3.因为是从Linux下将程序移植到VS下,所以查阅了大量关于移植的方法;(1)用stl/boost;(2)直接使用Mono中的System.Net.Socket;(3)库函数需要整理了,甚至有些基础类型的定义,需要自己手工做到头文件里,来调整。(4)用到系统API的地方全部要改,对于VC来说,只要把代码加到工程里,然后把相应的系统API改成window下的就可以了;(5)如果你的代码里没有线程、 信号量啥的特殊LINUX系统中API,那么你 的移植会很容易,解决一些小问题 就可以在VC下编译执行了;如果有系统API的话 那么你只能用跨平台库,或者直接替换成WIN32 API。 基本上来说 如果你两个平台都熟悉, 那么就很简单 ,否则不大容易。(6)如果你使用了linux下的一些库,那么使用cygwin做移植,是最省事的。 只要你用到系统调用的地方都要换成windows的API,VC不需要你自己写makefile,把系统API转换过来,还有头文件。(7)用MinGW移植;
4.编译程序时,遇到如下错误:转换到 COFF 期间失败: 文件无效或损坏 C:\Users\D3\Deskt;解决方法;(1)项目-->项目属性-->配置属性-->连接器-->清单文件-->嵌入清单 中的“是”改为“否”,但是这种方法治标不治本;不宜采用;(2)可能是因为系统最近多次更新,出现了两个版本的cvtres.exe。而系统变量里将这俩都引用了,编译的时候,不知道用哪个了,导致出错。解决办法是删掉一个。其中一个在C:\Windows\Microsoft.NET\Framework\v4.0.30319\cvtres.exe,另一个在你安装VS的软件目录..\Microsoft Visual Studio 10.0\vc\bin\cvtres.exe,然后右键属性-->详细信息 查看两者版本号,把低级的版本的删除l掉,就可以了。
5.调试程序过程中,还遇到了以下问题,见下图,出现这个错误的原因是建立工程项目时,工程的名字和主函数的名字不匹配,编译时找不到,所以报错;解决方法:将工程名字改成和源文件名字一致,错误图和解决方法两个图都在下面;
6.调试工程过程中,主要对工程中的.h文件的路径进行加载,好多.h文件需要重新添加路径;