我安装了外部库,但似乎无法链接它们。
我右键单击``项目'',然后单击工具提示上的``属性''。我将库目录调整为要使用的库。
项目属性页> VC ++>库目录_添加目录-[添加带有[library_name] .lib的正确目录]
项目属性页>链接器>输入>其他依赖项-[在列表中添加[library_name] .lib(w';')]
它构建良好,但是当我使用#include指令加载[my_include] .hpp时,它说“找不到源”。但是,为什么不找到图书馆呢?为什么按源搜索?
只要不需要使用库的代码,构建便会成功。这样就满足了依赖性。我在做什么错了?
我还需要提供源代码吗?我宁愿只使用库。
add:如何在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库。
没有链接问题,但我想确保链接也能正常工作。
答案 0 :(得分:0)
包含文件是与库文件不同的问题。包含文件是由编译器处理的文本源,库文件是馈送到链接器的二进制数据。
在与添加库目录相同的项目设置页面上,还有一行用于包含路径,添加该目录,在该目录中找到了要使用的代码的.h文件。确保为库搜索指定的目录实际上包含.lib文件,而为包含路径添加的目录则包含.h(或.hpp或.hxx)文件
如果在编译器找到包含文件后出现“无法解析的外部符号”错误,则可能需要添加实际的库文件(类似于#include指令,但不完全相同),使用Visual c ++可以完成此操作#pragma comment(lib,“”)指令或通过将文件添加到项目设置中的Linker-> Input-> Additional依赖项行中。