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\""

|