在 Linux 上的 Visual Studio 中链接两个项目

Link two Projects in Visual Studio on Linux

本文关键字:两个 项目 链接 上的 Linux Visual Studio      更新时间:2023-10-16

我在Visual Studio Community 2017中为我的Raspberry Pi(远程Linux系统)提供了一个远程解决方案,该解决方案由两个C++项目组成。 因为Project_B取决于Project_A。我在解决方案->属性->通用属性->项目依赖项下添加了合适的项目依赖项。 项目 B 中项目 A 的所有包含声明如下:

#include "../Project_A/header.h"

(它们在编译时应该是正确的)

当我构建时Project_B Project_A编译并链接(根据输出视图)并编译Project_B但链接器崩溃,因为它无法从Project_A中找到函数的定义。 有时,整个 IDE 崩溃并需要重新启动。

仅编译和链接Project_A工作正常。 作为解决方法,我已将所有文件从Project_A复制到Project_B并相应地修改了包含并删除了项目依赖项。

像这样,它有效。

但是,我希望有一个有效的,干净的解决方案,用于在Visual Studio中的远程Linux系统上链接两个项目。

提前谢谢。

4月4日 想到这里,我想知道我是否需要退后一步。

Visual Studio项目需要一堆源文件并创建一个(我们现在保持简单)目标,例如可执行文件。它还在此过程中创建多个中间文件,最重要的是目标文件。

那么,如何在另一个项目中利用一个项目的功能呢?最简单的方法是源包含,它的工作方式就像您使用标题一样,将源从项目B添加到项目A。不是最有效的解决方案,它可能会变得混乱,但它会起作用。 最常见的方法是将项目 B构建到库中。然后,创建可执行文件的项目A链接到项目 B库。 要创建项目 B 的库,请将项目类型设置为静态库,并具有指向 project A 的链接; 这就是我最初的答案所解决的问题。

====

===========Solution->Properties->Common Properties->Project Dependencies允许您指定构建顺序,即项目A依赖于项目 B,因此应首先构建项目 B它不会为编译器和链接器创建跨项目引用。

你必须告诉项目A在Pi上在哪里可以找到项目B的标题和二进制文件。对于标头,您可以像以前所做的那样使用相对路径,但更通用的做法是指定projectB文件在 VS 项目属性中C/C++ - General下的Additional Include Directories

中的位置。对于库,必须在项目属性的"Linker - Input"下指定Library Dependencies,并在"Linker - General"下指定Additional Library Directories。或者,对于同一解决方案中的项目,可以将Reference添加到项目A下的项目 B