在Windows上使用Boost和Cygwin
对于比我更高级的用户来说,这应该是一个简单的问题。:-) 如何在windows上使用带有cygwin的boost库 我正在winxp机器上使用cygwin使用g++编程。 我需要修改的贝塞尔函数的第二阶,所以我下载了最新版本的boost库并安装在 “c:\cygwin\lib\boost\u1\u38\u 0\”文件夹 我正在尝试从他们网站的“入门”部分运行“example.cpp”程序: 我使用一个简单的bashshell命令行从创建示例文件的目录编译:“g++-Wall example.cpp” 我一直得到这样的信息: “boost/lambda/lambda.hpp:没有这样的文件或目录” 我在命令行中尝试了所有可能的-L,-L,-I选项组合以包括目录,但没有成功。还尝试将文件夹添加到我的windows系统的路径行中在Windows上使用Boost和Cygwin,windows,boost,cygwin,Windows,Boost,Cygwin,对于比我更高级的用户来说,这应该是一个简单的问题。:-) 如何在windows上使用带有cygwin的boost库 我正在winxp机器上使用cygwin使用g++编程。 我需要修改的贝塞尔函数的第二阶,所以我下载了最新版本的boost库并安装在 “c:\cygwin\lib\boost\u1\u38\u 0\”文件夹 我正在尝试从他们网站的“入门”部分运行“example.cpp”程序: 我使用一个简单的bashshell命令行从创建示例文件的目录编译:“g++-Wall example.c
如何链接到/boost目录以及所有子目录?头文件“lambda .HPP”正在调用子目录中的其他头文件。 你可能不太熟悉C++了吗?你似乎在混淆术语 C++程序分两步构建:编译和链接。在第一步中,分别处理每个源文件(通常称为.cpp)。每个.cpp文件通常使用多个头文件,因此编译器首先插入这些头文件(按字面意思)。这就是为什么它被称为“包含” 在第二步中,链接器将所有编译的.cpp文件放在一起,并构建最终的程序。其中一些编译的.cpp可能以前被捆绑在一起,其中的捆绑包称为库 Boost是头文件和.cpp文件的集合。因此,编译器和链接器可能都需要找到Boost目录。从错误消息中可以清楚地看出,编译器步骤是问题所在。链接器不再需要标题
编译器将看到
#include
指令。这意味着它需要知道第一级boost
目录在哪里。在这一点上,我猜这个路径将是代码> /LIB/BooSTy1138,0/包含代码<(代码> >查找/名称LAMBDA。HPP < /COD>鸟枪AQoCH)< /P> < P>如果你不是完全绑定到CygWin,你应该看看它给你一个完整的C++安装,与所有的库(比如Boost)一起安装。为你准备
编辑:我应该明确指出,除了Cygwin之外,您还可以使用此MinGW安装,而不是作为替代品。只需确保MinGW-bin目录出现在Cygwin-one之前的路径中。我认为您需要
-I/lib/boost\u 1\u 38\u 0
——尽管这是一个非常不寻常的地方。您必须让我们知道您是如何安装它的,您是在您说的位置解压的,还是运行了makefiles?我想既然您提供了一个windows路径,您就没有在cygwin中安装它——您可能应该这样做。《unix入门指南》中的说明应该会有所帮助—尽管不要下载预构建的bjam,但它需要使用cygwin构建
但是,如果您对cygwin(或一般的unix)不太熟悉,我想您可能会发现使用本机windows工具会更容易,如。谢谢大家提供的信息,这是一篇很好的介绍cygwin使用库的文章。 丹尼尔是对的。虽然任何变化都会产生错误,但下面的一行(使用caps i)会起作用: g++-Wall-I/cygdrive/c/cygwin/lib/boost_1_38_0/example.cpp-o示例 我也会在接下来的几天检查MinGW
p、 我只是在那个文件夹中下载并解压缩了boost,但因为我只使用头文件,所以可能不需要用cygwin编译。[cygwin附带的boost版本是1.33,它似乎没有贝塞尔函数。]这是win7 cygwin64 g++5.4上的版本,而boost-1.64.7z是2017-7上的版本。谷歌没有显示任何有用的结果来启动windows上的boost(boost过时了吗?) 通过实验,我成功编译并运行了一个boost graph示例程序,如下所示:
:: g++ 5.4 in c:\cygwin64
:: 7z extract boost download in c:\tools\boost\boost164
> set BOOST_ROOT=c:\tools\boost\boost164
> setx BOOST_ROOT c:\tools\boost\boost164 -m
> cd %BOOST_ROOT%
> bootstrap.sh gcc (the bat files doesn't work)
> b2.exe
...failed updating 58 targets...
...skipped 18 targets...
...updated 1123 targets...
:: Lots of example here (not ranked highly by google)
> mklink /D eg %BOOST_ROOT%/libs/graph/example
:: Compiled and run [maxflow code using boost library][1]
:: http://vision.csd.uwo.ca/code
> unzip ; vi Makefile
CPPFLAGS = -I %BOOST_ROOT%/
LDFLAGS = -L%BOOST_ROOT%/stage/lib
> make
> set PATH=%PATH%;%BOOST_ROOT%/stage/lib
> maxflow.exe
Flow = 6
忘记包含程序:#include#include#include#include int main(){使用名称空间boost::lambda;typedef std::istream_迭代器in;std::for_each(in(std::cin),in(),std::cout最新版本的《入门指南》的链接是:你链接到1.35.+1,因为你难得有耐心用小词向外行解释基本概念-谢谢。@Ben关于基本概念的问题,与专家概念的问题:每个人都可以解释基本概念,但没有人能解释…同时,专家概念:每个人都试图解释这些,但没有人能解释。:@bordeo-你击中了它的头部!天才:)我可能会偷走它。除此之外,没有人想通过解释一个简单的概念来显得愚蠢!