Visual Studio 包含来自其他项目的 cpp 文件

问题描述 投票:0回答:5

我有一个来自另一个项目的 C++ .h 和 .cpp 文件,我想将其包含到我的项目中。 我不想将这些文件复制到我的项目中,因为我希望对这些文件的任何更改都应用到这两个项目。

我已将文件文件夹的目录包含在

属性->VC++目录->包含目录

我也将该文件夹包含在

属性->C/C++ ->常规->附加包含目录

.h 文件似乎可以工作。如果我将包含重命名为

以外的任何内容

#include“myfile.h”

cpp 文件获得未知定义。

当我编译时。错误是

致命错误C1083:无法打开源文件:'..\..\..\..\..\..\my project\myfile.cpp':没有这样的文件或目录

如果我从项目中删除cpp文件。然后我得到一长串未解决的函数。

错误 LNK2019:无法解析的外部符号“public:unsigned long __thiscall myclass::myfunction”

如何将 .h 和 .cpp 文件都包含到我的第二个项目中?

c++ visual-studio-2010 visual-studio-2012
5个回答
5
投票

对于 cpp 文件,您只需在项目上单击鼠标右键,选择“添加”->现有项目。 然后,当构建启动时,他们应该与其他人一起编译。

标题稍微复杂一些。有两种使用 #include 指令的方法: 带 < > 和 " " 大括号

使用“”大括号时,编译器将路径视为 相对于(如果不是绝对使用)cpp 文件位置

当使用 < > 大括号时,编译器会在系统包含文件夹之类的文件夹中查找文件。例如 - stdlib 标头文件夹和 windows.h 位置文件夹。属性条目其他包含目录也在那里。

我建议您更改项目结构并从两个项目中提取共享功能以将其编译为静态库。将共享标头放置在库项目内的某个子文件夹中,然后引用为

#include "mylibHeaderDir/someheader.h"

在依赖项目中,设置其他包含目录后,您可以将这些包含引用为

#include <myLibHeaderDir/someheader.h>

这种方法将来会对您有所帮助,因为您可以在您想要的每个项目中重用该共享模块。

关于如何创建和链接静态库,您可以阅读这篇文章http://msdn.microsoft.com/en-us/library/vstudio/ms235627(v=vs.110).aspx Visual Studio 的版本可能是有所不同,但基本原理是相同的。


0
投票

你不能只选择这样的文件。有两种合理的方法可以解决它。 1、通过代码版本控制系统(例如 svn/git)共享文件。 2、将.cpp编译成库并链接到该库。


0
投票

如果cpp可以被多个项目使用,那么一定意味着代码是通用的。这意味着您应该将该代码本身编译到一个库中,然后共享该库。如果需要两个这样的库一起工作,将相同的 cpp 编译到多个库中可能会导致稍后发生冲突。


0
投票

就我而言,对于 VS2022,当我将拖放的文件夹/文件从一个项目拖到另一个项目时,我遇到了相同的错误,相反,它的工作方式是手动创建文件夹和文件并将代码作为文本插入其中与复制粘贴。


-1
投票

尝试将它们拖到您的解决方案中? 您可以在解决方案中创建一个新文件夹,然后将它们全部拖到此文件夹中!

© www.soinside.com 2019 - 2024. All rights reserved.