在Windows上使用Boost和 Cygwin

对于比我更高级的用户来说,这应该是一个简单的问题。:-) 如何在 Windows 上使用带有 cygwin 的 boost 库?

对于比我更高级的用户来说,这应该是一个简单的问题。:-) 如何在 Windows 上使用带有 cygwin 的 boost 库?

我在 winxp 机器上使用 cygwin 使用 g ++ 编程。我需要修改二阶的 Bessel 函数,所以我下载了最新版本的 boost 库并将其安装在 'c:\ cygwin\ lib\ boost_1_38_0\' 文件夹中。

我试图从他们网站的“入门”部分运行“example.cpp”程序:http://www.boost.org/doc/libs/1_35_0/more/getting_started/unix-variants.html

我从使用简单的 Bash shell 命令行创建示例文件的目录编译:'g ++-Wall example.cpp'

我不断收到消息:“boost / lambda / lambda.hpp:没有这样的文件或目录”

我在命令行中尝试了-L,-l,-I 选项的所有可能的组合来包含目录,但无济于事。还试图在我的 windows 系统的 PATH 行中添加文件夹

如何链接到 / boost 目录和 ALSO 到所有子目录?头文件 'lambda.hpp' 正在调用子目录中的其他头文件

14

你可能不熟悉 C ++ 呢?看来你是混淆的术语。

C++ 程序通过两个步骤构建:编译和链接。在第一步中,每个源文件 (通常称为.cpp) 被单独处理。每个.cpp 文件通常使用多个头,所以编译器首先插入那些-字面上。这就是为什么它被称为 # include。

在第二步中,链接器将所有编译的.cpp 文件放在一起并构建您的最终程序。其中一些编译的.cpp 之前可能已经在一起,其中被称为库。

Boost 是 headers 和.cpp 文件的集合。所以,编译器和链接器可能都需要找到 Boost 目录。从你的错误消息中,很明显编译器步骤是问题所在。链接器不再需要 headers

编译器将看到#include <boost/lambda/lambda.hpp>instuction。这意味着它需要知道在哪里找到第一级boost目录。我想在这一点上,路径将是/lib/boost_ 1_ 38_0/include(总是有find / -name lambda.hppshotgun appraoch)

3

如果您不完全喜欢 cygwin,您应该看看http://nuwen.net/mingw.html,它为您提供了一个完整的 MinGW C ++ 安装,并为您设置了所有库(如 Boost)。

编辑:我应该明确表示您可以在 Cygwin 之外使用此 MinGW 安装,而不是作为替代。只需确保 MinGW bin 目录在您的 PATH 中出现在 Cygwin 之前。

2

我认为你需要-I /lib/boost_1_38_0-虽然这是一个非常不寻常的地方放它。你必须让我们知道你是如何安装它的,你只是在你说的位置解压缩它,还是你运行 makefiles?我假设既然你给出了一个 windows 路径,你就没有在 cygwin 中安装它-你可能应该这样做。unix 的入门指南中的说明应该帮助

但是,如果你不是很熟悉 cygwin(或一般的 unix),我想你可能会发现使用本机窗口工具更容易-如Neil Butterworth's answer

2

谢谢大家的信息,这是一个很好的介绍使用 cygwin 的库。Daniel 是对的。虽然任何变化都会给出一个错误,但下面的行 (使用 caps i) 做的伎俩:

g ++-Wall-I / cygdrive / c / cygwin / lib / boost_1_38_0 / example.cpp-o 示例

我也会在接下来的几天里检查 MinGW。

p.s.我只是在那个文件夹中下载并解压缩了 boost,但是由于我只使用头文件,所以我可能不需要用 cygwin 编译。[cygwin 包含的 boost 版本是 1.33,它似乎没有 Bessel 函数。]

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(541)
在GoogleAnalytics中 如果每个会话只能触发一次 为什么UniquePageviews高于 Sessions
上一篇
如何使用WinCE5.0RTOS在ATL应用程序中加载第三方.dll(COMDLL )
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(62条)