Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Boost库要求lib文件,我认为这是不必要的 我正在使用一个供应商提供的一些自动生成的C++代码。他们广泛使用Boost库,因此我还需要使用Boost库来创建适当的对象,将其作为输入发送给供应商方法。它们在自动生成的代码中提供lib文件夹中的所有Boost头文件_C++_Visual Studio_Boost_Linker_Header Files - Fatal编程技术网

Boost库要求lib文件,我认为这是不必要的 我正在使用一个供应商提供的一些自动生成的C++代码。他们广泛使用Boost库,因此我还需要使用Boost库来创建适当的对象,将其作为输入发送给供应商方法。它们在自动生成的代码中提供lib文件夹中的所有Boost头文件

Boost库要求lib文件,我认为这是不必要的 我正在使用一个供应商提供的一些自动生成的C++代码。他们广泛使用Boost库,因此我还需要使用Boost库来创建适当的对象,将其作为输入发送给供应商方法。它们在自动生成的代码中提供lib文件夹中的所有Boost头文件,c++,visual-studio,boost,linker,header-files,C++,Visual Studio,Boost,Linker,Header Files,我以前从未使用过Boost,但从我在过去几天收集的信息来看,它在很大程度上是一个只包含标题的库,这对我来说意味着在我的软件中不需要使用*.dll或*.lib文件,只要我不使用列出的需要lib文件的功能 我遇到的问题是,当我尝试包含“boost\date\u time.hpp”时,当需要构建它时,我得到一个LNK1104错误“无法打开文件libboost\u date\u time-vc140-mt-gd-1_38.lib”。我注意到Boost网站上说一些库确实有可选的编译库,这取决于是否使用了某

我以前从未使用过Boost,但从我在过去几天收集的信息来看,它在很大程度上是一个只包含标题的库,这对我来说意味着在我的软件中不需要使用*.dll或*.lib文件,只要我不使用列出的需要lib文件的功能

我遇到的问题是,当我尝试包含“boost\date\u time.hpp”时,当需要构建它时,我得到一个LNK1104错误“无法打开文件libboost\u date\u time-vc140-mt-gd-1_38.lib”。我注意到Boost网站上说一些库确实有可选的编译库,这取决于是否使用了某些功能;对于date_time,其说明如下:

“BooS.DATETIME有一个二进制组件,只需要使用它的ToStSnopy/FROUL字符串或序列化特征,或者如果你瞄准Visual C++ 6。X或Borland。”

我不需要任何需要编译库的特性,也没有在代码中引用任何特性,只是添加了include。那它为什么要这个文件呢?还有,它怎么知道需要什么文件?其中一个头文件中是否隐藏了一个鬼鬼祟祟的“pragma”?我开始寻找,但是有太多的路要走

供应商确实为Boost.DateTime提供了一个已编译的dll和lib文件,但是它被命名为“Boost_date_time-vc140-mt-gd-1_38.lib”,编译器要查找的文件前面有“lib”前缀。如果它确实需要它,那么如何将链接器定向到正确的文件?我知道我可以将文件名更改为链接器正在查找的文件名(链接器已经有包含该文件的文件夹的路径,这与此无关),但由于此代码来自供应商代码生成软件,因此它将经常恢复为原始文件名,因此这不是最佳解决方案


一如既往,感谢您提供的帮助。

正如tkausl在评论中提到的,试图加载库的头文件中有一条#pragma评论


通过在“#include”BOOST\date\u time.hpp”行之前添加行“#define BOOST_ALL_NO_LIB”,这就解决了问题,因为定义的宏告诉BOOST不要加载LIB文件。

其中一个头文件中是否隐藏了一个鬼祟的“pragma”。
BOOST\u ALL\u NO\u LIB
宏禁用此“功能”,您应该清理您的问题。您可以从Boost开始(它不是),然后正确地注意到一些库也编译了组件。没有
数据\时间
,而是
日期\时间
。如果您不需要Boost功能,为什么要包括
Boost/date\u time.hpp
?如果你的代码没有使用编译过的组件,如果你使用的第三方代码引用了它,你就需要这个库。最后,该供应商不提供如何使用其代码的说明吗ῥεῖ, 问题不在于如何链接到不同版本的Boost,该版本的错误和我试图链接到的文件都是正确的。问题是,我认为它根本不需要一个.lib文件,但如果需要,它从哪里获得文件名,如何更改它。您似乎已将此标记为一个问题的副本,该问题询问如何引用不同版本的Boost。@StevenGillies“如果您想将其作为答案发布,我将接受它。”除非我(或其他5人)决定重新打开该问题(我现在就这样做),否则他们不能这样做。无论如何,下次要尽量把你的问题弄清楚。最好提供一个演示代码不起作用的地方,而不是写冗长而混乱的文章。@tkausl^^^^^^^^