Windows 7 使用 VS.NET 2003 时遇到“LNK1201: 写入程序数据库时出错”的解决方案
2013-06-06 16:40
246 查看
转自: http://www.cppblog.com/tx7do/archive/2011/02/12/139938.html
Windows 7 使用 VS.NET 2003 开发项目时经常会遇到类似如下错误:
TestServer fatal error LNK1201: 写入程序数据库“d:\Projects\GameServer\data\TestServer.pdb”时出错;请检查是否是磁盘空间不足、路径无效或权限不够
在排除了空间、路径、权限等原因后仍然无法顺利生成项目,微软官方也没有提供相关的解决方案,Google 了好几天也找不到网友任何修复建议,今天偶然发现 MSDN
上一篇帖子,正是讨论这个问题,于是尝试按照上面的步骤进行操作,竟然真的可以!特分享给大家~
一、首先下载两个文件:Handle 和 freepdb;
handle:http://technet.microsoft.com/en-us/sysinternals/bb896655.aspx
freepdb : 原本给的是不对的,后来把兔子写的拿过来运行,问题就解决了,这里只给出兔子的版本:
首先新建一个freepdb.txt,把以下代码拷贝到文件中,保存后,将文件freepdb.txt改名为freepdb.cmd。
以下就是代码:
二、解压这两个压缩包,并把“freepdb.cmd”和“handle.exe”两个文件移至同一目录下(如C:\LNK1201\);
三、用 VS.NET 2003 打开一个项目,在解决方案资源管理器中项目文件上点右键属性,展开“生成事件”,点击“预生成事件”,在右侧命令行中填入:<path>\freepdb
$(ProjectName) ;
这里需要注意到是:在预生成事件里输入
比如 c:\lnk1201\freepdb.cmd ServerD
ServerD为你的被锁住的PDB名字,一般来说是exe名字而不是工程名。。。请注意
不过你要是没修改输出exe名字。直接就是工程名也是对的
四、完成!运行一下看看吧。如果仍然有问题,先双击运行这两个文件试试,因为我是先运行后再配置项目属性的,所以不确定不运行会不会出错。
如果上述文件无法下载,请联系 xoyozo 索取!Have fun!
最后需要注意到是,要以管理员身份运行 VS.NET 2003
Windows 7 使用 VS.NET 2003 开发项目时经常会遇到类似如下错误:
TestServer fatal error LNK1201: 写入程序数据库“d:\Projects\GameServer\data\TestServer.pdb”时出错;请检查是否是磁盘空间不足、路径无效或权限不够
在排除了空间、路径、权限等原因后仍然无法顺利生成项目,微软官方也没有提供相关的解决方案,Google 了好几天也找不到网友任何修复建议,今天偶然发现 MSDN
上一篇帖子,正是讨论这个问题,于是尝试按照上面的步骤进行操作,竟然真的可以!特分享给大家~
一、首先下载两个文件:Handle 和 freepdb;
handle:http://technet.microsoft.com/en-us/sysinternals/bb896655.aspx
freepdb : 原本给的是不对的,后来把兔子写的拿过来运行,问题就解决了,这里只给出兔子的版本:
首先新建一个freepdb.txt,把以下代码拷贝到文件中,保存后,将文件freepdb.txt改名为freepdb.cmd。
以下就是代码:
rem 在预生成事件里输入 比如 c:\lnk1201\freepdb.cmd ServerD rem ServerD为你的被锁住的PDB名字,一般来说是exe名字而不是工程名。。。请注意 rem 不过你要是没修改输出exe名字。直接就是工程名也是对的 @echo off if "%1"=="" ( echo Usage: freepdb filename echo This will free all handles of VS2003 on filename.pdb echo Requires the Handle utility from Windows Sysinternals goto :eof ) cd /d "%~dp0" for /f "tokens=2 skip=5 delims=:" %%a in ('handle -p devenv.exe "%1.pdb"') do ( rem 寻找pid for /f "tokens=1-2" %%b in ("%%a") do ( for /f "tokens=3 skip=5 delims=:" %%d in ('handle -p devenv.exe "%1.pdb"') do ( rem 寻找FileID for /f "tokens=1-2" %%e in ("%%d") do ( rem 执行关闭命令 rem 此时%%b为pid rem 此时%%f为fileid handle -c %%f -y -p %%b %1 > NULL ) ) ) ) exit /b 0
二、解压这两个压缩包,并把“freepdb.cmd”和“handle.exe”两个文件移至同一目录下(如C:\LNK1201\);
三、用 VS.NET 2003 打开一个项目,在解决方案资源管理器中项目文件上点右键属性,展开“生成事件”,点击“预生成事件”,在右侧命令行中填入:<path>\freepdb
$(ProjectName) ;
这里需要注意到是:在预生成事件里输入
比如 c:\lnk1201\freepdb.cmd ServerD
ServerD为你的被锁住的PDB名字,一般来说是exe名字而不是工程名。。。请注意
不过你要是没修改输出exe名字。直接就是工程名也是对的
四、完成!运行一下看看吧。如果仍然有问题,先双击运行这两个文件试试,因为我是先运行后再配置项目属性的,所以不确定不运行会不会出错。
如果上述文件无法下载,请联系 xoyozo 索取!Have fun!
最后需要注意到是,要以管理员身份运行 VS.NET 2003
相关文章推荐
- Windows 7 使用 VS.NET 2003 时遇到“LNK1201: 写入程序数据库时出错”的解决方案
- Windows 7 使用 VS.NET 2003 时遇到“LNK1201: 写入程序数据库时出错”的解决方案 修正版
- VS.NET 2003创建ASP.NET程序出错
- VS.NET 2003 制作安装部署程序时遇到的问题
- Windows server 2008 64-bit计划任务运行使用了excel 2003 32-bit .net开发组件的程序遇到的问题
- asp.net中使用Global.asax文件中添加应用出错代码,写入系统日志文件或数据库
- asp.net中使用Global.asax文件中添加应用出错代码,写入系统日志文件或数据库
- 64位Win7 vs2003调试“写入程序数据库时出错..”错误解决方案
- VS.NET2005打包程序遇到不可恢复的生成错误,解决方案
- asp.net中使用Global.asax文件中添加应用出错代码,写入系统日志文件或数据库
- win7+iis7.5+asp.net下 CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files 解决方案
- 如何使用VS.NET调试数据库存储过程 longrujun [原作]
- windows中使用CMake和Eclipse开发Qt程序遇到的问题
- VS2003.Net fatal error LNK1201: 写入程序数据库“.pdb”时出错
- win7+iis7.5+asp.net下 CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files 解决方案
- 【转载】使用ObjectARX 2005+Visual Studio.NET 2003创建ARX程序
- 怎样部署使用 Crystal Reports 和 VS.NET 的程序
- xml数据岛,xsl,javascript,asp.net 的结合使用 web 程序模仿 windows 资源管理器
- 配置ASP.NET平台时遇到的“访问IIS元数据库失败”--解决方案
- error C1041: 无法打开程序数据库“xxx\vc140.pdb”;如果要将多个 CL.EXE 写入同一个 .PDB 文件,请使用