编译器不遵循 Visual Studio C++ 中的符号链接;
我正在使用 Visual Studio 2008 C++ 项目(Visa 32 位)。
我的源代码中有以下 #include 指令。
#include <example/header.h>
在我的包含路径中,我指定了“example”的父目录,即
C:/.../include
标头的完整路径看起来像
C:/.../include/example/header.h
但是,“example”是一个符号链接(A '通过文件资源管理器“新快捷方式”创建的“.lnk”)。我收到以下错误
c:...\foo.cpp(37) : 致命错误 C1083: 无法打开包含文件: 'example/header.h': 没有这样的文件或目录
如果我用实际目录替换符号链接,该项目将正确编译。出于实际原因,我需要它作为符号链接。有没有办法让 Visual Studio 预处理器跟踪链接?
I am using Visual Studio 2008 C++ project (Visa 32 bit).
I have the following #include directive in my source code.
#include <example/header.h>
In my include path I specify the parent directory of 'example', i.e.
C:/.../include
where the full path to the header looks like
C:/.../include/example/header.h
However, 'example' is a symbolic link (A '.lnk' created via file explorer 'new shortcut'). I get the following error
c:...\foo.cpp(37) : fatal error C1083: Cannot open include file: 'example/header.h': No such file or directory
If I replace the symbolic link with the actual directory, the project will compile correctly. For practical reasons I need it to be a symbolic link. Is there anyway to make the Visual Studio pre-processor follow the link?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您确定不创建快捷方式吗?快捷方式的工作级别比符号链接更高,并且对应用程序没有任何意义。
相反,符号链接(如果正确创建)应该可以与任何读取/写入文件/文件夹的应用程序正常工作。
有关更多详细信息,您可能希望考虑阅读此关于符号链接的文章,解释了如何使用
mklink
创建符号链接。以下是“Bernard Kerckenaere”对该文章的评论中的有用片段:
您想要创建的是一个符号链接,您可以使用mlink通过
/D
参数来创建它。Are you sure you're not creating a shortcut? Shortcuts work on a higher level than symbolic links and mean nothing to applications.
Conversely, symbolic links (if properly created) should work fine with any application that reads/writes to files/folders.
For more details, you may wish to consider reading this article about symbolic links, which explains how you can create a symbolic link using
mklink
.Here's a helpful snippet from a comment on that article by "Bernard Kerckenaere":
What you want to create is a symbolic link which you can do with the
/D
parameter using mlink..lnk不是符号链接,它是资源管理器的快捷方式文件。
要创建硬链接,请使用
在 Vista 上,有 mklink 实用程序来创建符号链接。
.lnk is not symbolic link, it is shortcut file for Explorer.
To create hard link, use
On Vista, there is mklink utility to create symbolic links.
旧版本的 Visual Studio 在符号链接方面有点挑剔。使用
\H
参数对文件进行硬链接几乎不起作用,但使用\D
对整个目录进行符号链接通常没问题。不过,之后您可能需要从项目中删除并重新添加该文件夹。Older versions of Visual Studio are a bit finicky when it comes to symlinks. Hard links on files using the
\H
parameter hardly ever work, but symlinking entire directories using\D
is usually fine. Afterwards, you might need to remove and re-add the folder from and to your project, though.