【问题标题】:Visual Studio 17 C++ Link External Library (Boost Installation)Visual Studio 17 C++ 链接外部库(Boost 安装)
【发布时间】:2019-03-11 06:58:58
【问题描述】:

我安装了外部库,但似乎无法链接它们。

我右键单击项目并点击工具提示上的属性。我将库目录调整为我要使用的库。

项目属性页 > VC++ > 库目录 _ 添加目录 - [添加正确的目录,其中包含 [library_name].lib ]

项目属性页 > 链接器 > 输入 > 附加依赖项 - [ add [library_name].lib in list (w ';') ]

它构建得很好,但是当我使用 #include 指令加载 [my_include].hpp 时,它显示“找不到源”。但是,为什么它不只是找到图书馆呢?为什么要按源搜索?

只要不需要需要库的代码,构建就会成功。因此,满足了依赖关系。我做错了什么?

我也需要做源码吗?我宁愿只使用图书馆。

添加:如何在 Visual Studio C++ 中跟踪构建。在 Linux 中,您可以根据需要跟踪所有步骤。

另一个补充:如果您想知道,下面有构建日志文件设置

工具 -> 选项 -> 项目和解决方案 -> MSBuild ...

供检查。

沙盒程序

#include <iostream>
// squiggly under next line's include
#include <boost/optional.hpp>

int main()
{
    std::cout << "Hello World!\n"; 
}

项目 -> 属性页 -> C/C++ -> 常规 -> 附加包含目录 _ 设置为 _ C:\local\boost_1_68_0;%(AdditionalIncludeDirectories)

boost_1_68_0 是我安装的 boost 库。

没有链接问题,但我想确保链接也有效。

【问题讨论】:

  • 我尝试加载 [my_include].hpp 你在做什么来加载这个文件? #include 将返回完全不同的错误。
  • 如果我有库,是否需要该文件?
  • 如果我有库,是否需要该文件? 您可能需要标头来编译使用该库的任何内容。如果这是一个 .dll,您可能还需要 .lib(导入库)。
  • 我也需要做源码吗?不需要。
  • 还需要添加c++ -&gt; General -&gt; Additional Include Directories的路径。

标签: c++ visual-studio dll build visual-studio-2017


【解决方案1】:

包含文件是与库文件不同的问题 包含文件是由编译器处理的文本源,库文件是提供给链接器的二进制数据。

在您添加库目录的同一项目设置页面上,还有一行包含路径,添加找到您要使用的代码的 .h 文件的目录。确保您为库搜索指定的目录实际上包含 .lib 文件,而为包含路径添加的目录包含 .h(或 .hpp 或 .hxx)文件

如果在编译器找到包含文件后出现“未解析的外部符号”错误,您可能需要添加实际的库文件(类似于 #include 指令但不完全相同),使用 Visual c++ 可以做到这一点#pragma comment(lib, "") 指令或通过将文件添加到项目设置中的 Linker->Input->Additional dependencies 行。

【讨论】:

  • 我已添加到我的帖子中。我什至无法让“包含”工作!
猜你喜欢
  • 2023-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多