我正在使用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预处理器跟随链接?
答案 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
对整个目录进行符号链接通常很好。然后,您可能需要从项目中删除并重新添加文件夹。