在 Linux 上的 Visual Studio 中链接两个项目
Link two Projects in Visual Studio on Linux
我在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。
- 如何在QT中为两个项目使用单个UI
- 在 Linux 上的 Visual Studio 中链接两个项目
- 在两个项目中使用全局变量
- 在代码块中一起编译两个项目
- 一个解决方案,两个项目:如何从 Windows 应用程序调用控制台项目?C++
- QTreeWidget使用拖放在两个项目之间插入
- NetBeans - 两个项目 - 一个找不到要包含的文件 (C++)
- CMakeLists配置以链接两个C++项目
- 两个项目静态地链接同一个SQLite库会导致问题
- qtmake-两个项目/目标之间的共享资源
- C++/C在Visual Studio中的两个项目之间共享全局变量
- 两个C++项目可以相互引用吗?
- 在 Visual Studio 解决方案中链接两个项目
- Visual Studio:在两个项目的解决方案中包含.h或.cpp
- 一个链接节点,在一个节点中有两个项目
- 在std::list中合并(将两个项目融合在一起,用融合替换)项目的算法(即破坏性聚类)
- 共享了两个项目文件
- C++ 一个解决方案两个项目(EXE & DLL)链接错误
- 在两个项目之间链接时,获取虚拟函数的链接错误
- 在C++中查找两个项目之间的差异时出错