Visual Studio:如何让链接器看到不在解决方案中的文件

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

我知道有与我要问的问题类似的问题,但没有一个解决方案对我有用,其他问题也没有特别描述我的情况。

这是我的确切情况:我使用的是 Visual Studio 2022 Community Edition。我有一个解决方案。在这个解决方案中,我有 3 个项目。在解决方案上下文之外(但在解决方案文件夹内),我有一个包含 .h 和相应的 .c 文件的文件夹,其中我有一些结构、函数和定义,我想在我的之间共享项目,意思是,我会在项目的不同文件中包含一些(或全部).h#include“path_to_file ile1.h”,...),以访问这些文件中的代码文件,在我的其他项目中也是如此。

我设法通过将我需要的文件作为“现有项目”手动添加到每个项目来实现这一点。然而,这太可怕了,仅仅是因为它不是解决我的问题的可扩展解决方案。我想做的就是,对于每个项目(或整个解决方案,但我认为这是不可能的,因为每个项目都是单独构建的),告诉链接器包含的文件夹的相对路径。不属于解决方案的 h.c 文件,它们将在链接期间被考虑。

如果以某种方式将文件添加到 solution 会使问题更简单,我愿意这样做,情况的性质允许这样做。

我试过弄乱项目属性。我将相对路径添加到 C/C++ > General > Additional Include Directories(我添加了 $(SolutionDir)\global,global 是文件所在文件夹的名称),我还在 Linker > General > Additional Library Directories(与我在上面添加的内容相同)。没有什么能真正解决我遇到的链接器错误。 IDE 可以很好地找到文件,当我在项目中使用它们时,代码会导航到声明和定义,甚至可以自动完成工作,但是当我尝试构建时,链接器永远找不到任何东西。这些是我得到的错误:

source.obj : error LNK2019: 未解析的外部符号 CheckNullVa 在函数 Init 中引用 source.obj : error LNK2019: 未解析的外部符号 InRange 在函数 LoadInitialValues 中引用 (...)

基本上,我尝试使用的每个函数的错误都来自这些解决方案外部文件。

我还尝试在解决方案中创建一个新项目,在那里添加文件,然后再次尝试在我想包含它们的项目中设置相同的属性,并右键单击项目Build Dependencies > Project Dependencies ...并选中我创建的包含这些文件的新项目旁边的框。这导致了完全相同的问题。

我只能通过 Add > Existing Item... 手动将文件逐个添加到我想要访问文件的每个项目中来使其工作 这行得通,但这不是我正在寻找的解决方案。

c visual-studio linker linker-errors visual-studio-2022
© www.soinside.com 2019 - 2024. All rights reserved.