none
LNK1168 错误 RRS feed

  • 问题

  • 在Windows 7上使用Visual C++ 2010 专业版进行开发时,发现执行程序后,System进程中还会保留若干秒程序的句柄,导致紧接着的链接会报出LNK1168不可写错误,通常等待十几或几十秒后才能正常

    查看句柄我用的是Sysinternals的ProcessExplorer,句柄归属的进程显示为System进程

    请问这是什么原因,有什么办法可以改善或避免这种情况?谢谢

    2012年4月28日 11:20

答案

  • Hider_Dick 你好!

    如果一个文件正被使用,那么其他进程是不能打开这个文件的。如果程序试图打开一个没有写权限的文件,那么程序将会报LNK1168这个错误。

    要解决这个问题,我建议你参考一下步骤:
    1-]查看是否安装了VS2010 SP1,如果没有的话,请安装相对应的版本。
    2-]查看项目下的Debug目录,确定你对要打开的文件具有写权限。
    3-]在执行程序之前,请查看任务管理器,一定要保证相关的进程已经被停止。

    希望我的回复对你有所帮助!

    祝你好运!


    Helen Zhao [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 Helen Zhao 2012年5月7日 2:06
    2012年5月1日 2:52
  • 原因已经从网上找到,参见:

    http://www.retrocopy.com/blog/28/cant-delete-exe-files-in-vista--windows-7-solved.aspx

    需要解除对“Application Experience”服务的禁用,设为手动即可,只要你打开一个有exe文件的目录触发兼容性请求,这个服务就会启动

    2012年5月25日 16:53

全部回复

  • Hider_Dick 你好!

    如果一个文件正被使用,那么其他进程是不能打开这个文件的。如果程序试图打开一个没有写权限的文件,那么程序将会报LNK1168这个错误。

    要解决这个问题,我建议你参考一下步骤:
    1-]查看是否安装了VS2010 SP1,如果没有的话,请安装相对应的版本。
    2-]查看项目下的Debug目录,确定你对要打开的文件具有写权限。
    3-]在执行程序之前,请查看任务管理器,一定要保证相关的进程已经被停止。

    希望我的回复对你有所帮助!

    祝你好运!


    Helen Zhao [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 Helen Zhao 2012年5月7日 2:06
    2012年5月1日 2:52
  • 我的VS2010版本是10.0.40219.1 SP1Rel,因此应该是包含了SP1

    我的程序是已经退出了的,从任务管理器或其它进程管理软件都看不到程序进程

    肯定不是权限问题,我一直在进行编译调试

    仅仅只是这个程序(实际上还包括编译时用的link.exe、cl.exe等VS自己的程序)的句柄都在System进程中滞留的原因,等待约几十秒后可以用工具看到这些句柄才会消失,此时就可以正常编译链接了

    所以我怀疑是不是系统会保留刚刚执行过的一些程序的信息以便快速再次运行?可是对于编写程序这就是个麻烦事了

    2012年5月1日 4:22
  • 原因已经从网上找到,参见:

    http://www.retrocopy.com/blog/28/cant-delete-exe-files-in-vista--windows-7-solved.aspx

    需要解除对“Application Experience”服务的禁用,设为手动即可,只要你打开一个有exe文件的目录触发兼容性请求,这个服务就会启动

    2012年5月25日 16:53