编译器不遵循Visual Studio C ++中的符号链接

时间:2010-08-16 04:52:50

标签: visual-studio-2008 winapi compiler-errors header-files

我正在使用Visual Studio 2008 C ++项目(Visa 32位)。

我的源代码中有以下 #include 指令。

#include <example/header.h>

在我的包含路径中,我指定了'example'的父目录,即

C:/.../include

标题的完整路径如下所示

C:/.../include/example/header.h

但是,“示例”是符号链接(通过文件资源管理器“新快捷方式”创建的'.lnk')。我收到以下错误

  

c:... \ foo.cpp(37):致命错误C1083:无法打开包含文件:'example / header.h':没有这样的文件或目录

如果我将符号链接替换为实际目录,项目将正确编译。出于实际原因,我需要它作为一个象征性的联系。反正有没有让Visual Studio预处理器跟随链接?

3 个答案:

答案 0 :(得分:10)

  

链接是符号链接(.lnk)

您确定没有创建快捷方式吗?快捷方式的工作级别高于符号链接,对应用程序没有任何意义。

相反,符号链接(如果正确创建)应该适用于任何读/写文件/文件夹的应用程序。

有关详细信息,您可以考虑阅读此article about symbolic links,其中介绍了如何使用mklink创建符号链接。

以下是“Bernard Kerckenaere”对该文章发表评论的有用摘录:

  
      
  • 快捷方式:在操作系统级别(对于希望的应用程序)   读/写链接,它只是一个   无意义的文件)

  •   
  • 软链接(或符号链接):类似于快捷方式,但在文件系统级别上   (应用程序读/写   链接,实际上会读/写   文件链接到)   ...   这将适用于分区或驱动器

  •   
  • 硬链接:仅针对文件,会发生多种情况   指向相同的文件条目   物理数据,删除时   进入,对方仍然会工作,   在所有条目之前,数据不会消失   被删除(如果有软链接你   删除原始目录,   链接将不再有效!)    - &GT;显然,您只能创建指向同一分区上文件的硬链接

  •   

您要创建的是符号链接,您可以使用mlink对/D参数执行此操作。

答案 1 :(得分:1)

.lnk不是符号链接,它是Explorer的快捷方式文件。 要创建硬链接,请使用

fsutil hardlink create link_name file_name

在Vista上,有 mklink 实用程序来创建符号链接。

答案 2 :(得分:0)

对于符号链接,较旧版本的Visual Studio有点挑剔。使用 @Html.TextBoxFor(model => model.emailContact, new {@placeholder = "Your Placeholder Text" } 参数的文件上的硬链接几乎不起作用,但使用\H对整个目录进行符号链接通常很好。然后,您可能需要从项目中删除并重新添加文件夹。