Visual Studio.net 2003应该说是目前windows平台上最好用的开发平台之一了。但任何软件的升级过程中总会有遇到问题。
当我们从旧的Vs 6.0升级时,由于工程文件格式的转变,工程文件必须经过一个转化的过程。可是vs.net2003却有一个bug,给很多人带来了麻烦。
发现问题:
使用ptypes库时,只找到source,要自己编译成lib。看看文件夹结构,有一个win32目录里面有dsp(vs6.0的工程文件),于是欣然打开并选择转换可是遇到错误“引项目文件已损坏而无法打开”,FT。
寻找问题:
怎么找,正在怀疑为RPWT,偶然中习惯性的用记事本打开(见文末)发现出现很多奇怪的字符(方块状)。这些字符在打开
UNIX/LINUX下的文件时也看到过,莫非……
解决问题:
LINUX/UNIX下的换行符是0x0A,而windows下的是0x0D0A,问题可能出在这里。
动手验证一下猜想是否正确。我们自己写一个转换的程序(kow~,用不着吧)
#include <fstream>
#include <iostream>
using namespace std;
int main(int argc,char** argv){
if (argc !=2)exit(1);
ifstream ifs(argv[1],ios::binary);
char a;
while(ifs >> a){
if(static_cast<int>(a) == 0x0A)cout << static_cast<char>(0x0D)
<< static_cast<char>(0x0A);
cout << a;
}
}
使用方法:程序名 dsp文件名 > 新的dsp文件名
然后重新打开、转换,哈哈成功了。
后记:
嗬嗬,解决问题有时真的是偶然的灵感。
PS:
我有个习惯,就是在右键中添加一些常用功能,我的注册表文件如下:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell]
[HKEY_CLASSES_ROOT\*\shell\(&1)打开命令行]
@="(&1)打开命令行"
[HKEY_CLASSES_ROOT\*\shell\(&1)打开命令行\command]
@="cmd"
[HKEY_CLASSES_ROOT\*\shell\(&2)命令行执行]
@="(&2)命令行执行"
[HKEY_CLASSES_ROOT\*\shell\(&2)命令行执行\command]
@="cmd /c D:\\smalltools\\runwitharg.cmd %1"
[HKEY_CLASSES_ROOT\*\shell\(&3)记事本编辑]
@="(&3)记事本编辑"
[HKEY_CLASSES_ROOT\*\shell\(&3)记事本编辑\command]
@="notepad %1"
[HKEY_CLASSES_ROOT\*\shell\(&4)写字板编辑]
@="(&4)写字板编辑"
[HKEY_CLASSES_ROOT\*\shell\(&4)写字板编辑\command]
@="C:\\Program Files\\Windows NT\\Accessories\\wordpad.exe \"%1\""
[HKEY_CLASSES_ROOT\*\shell\(&5)用HexWorks编辑]
@="(&5)用HexWorks编辑"
[HKEY_CLASSES_ROOT\*\shell\(&5)用HexWorks编辑\command]
@="D:\\Hex Workshop 3.0\\hworks32.exe \"%1\""