使用Boost库与Borland C++命令行工具
Using Boost library with Borland C++ Command Line Tool
我在使用Borland C++命令行工具(适用于Win32的Borland C++5.5.1)编译包含boost(1.55.0)的C++代码时遇到问题。
我测试了Boost Getting Started页面上的示例,example.cpp:
#include <boost/lambda/lambda.hpp>
#include <iostream>
#include <iterator>
#include <algorithm>
int main()
{
using namespace boost::lambda;
typedef std::istream_iterator<int> in;
std::for_each(
in(std::cin), in(), std::cout << (_1 * 3) << " " );
return 0;
}
我已经修改了bcc32.cfg文件,以包括如下的boost标头:
-I"c:BorlandBcc55include"
-I"C:boost_1_55_0"
-L"c:BorlandBcc55lib"
然后,我尝试使用bcc32 example.cpp
进行编译,得到以下错误:
Error E2221 C:boost_1_55_0boost/static_assert.hpp 62: Macro argument syntax error
Error E2221 C:boost_1_55_0boost/static_assert.hpp 182: Macro argument syntax error
Error E2238 C:boost_1_55_0boost/tuple/detail/tuple_basic.hpp 429: Multiple declaration for 'length<tuple<null_type,null_type,null_type,null_type,null_type,null_type,null_type,null_type,null_type,null_type> >'
Error E2344 C:boost_1_55_0boost/tuple/detail/tuple_basic.hpp 424: Earlier declaration of 'length<tuple<null_type,null_type,null_type,null_type,null_type,null_type,null_type,null_type,null_type,null_type> >'
Error E2238 C:boost_1_55_0boost/tuple/detail/tuple_basic.hpp 439: Multiple declaration for 'length<null_type>'
Error E2344 C:boost_1_55_0boost/tuple/detail/tuple_basic.hpp 434: Earlier declaration of 'length<null_type>'
Error E2108 C:boost_1_55_0boost/tuple/detail/tuple_basic.hpp 700: Improper use of typedef 'detail::ignore_t'
Error E2299 C:boost_1_55_0boost/tuple/detail/tuple_basic.hpp 700: Cannot generate template specialization from 'make_tuple_traits<T>'
Error E2321 C:boost_1_55_0boost/tuple/detail/tuple_basic.hpp 702: Declaration does not specify a tag or an identifier
Error E2108 C:boost_1_55_0boost/tuple/detail/tuple_basic.hpp 832: Improper use of typedef 'ignore_t'
Error E2299 C:boost_1_55_0boost/tuple/detail/tuple_basic.hpp 832: Cannot generate template specialization from 'tie_traits<T>'
Error E2321 C:boost_1_55_0boost/tuple/detail/tuple_basic.hpp 834: Declaration does not specify a tag or an identifier
Error E2401 C:boost_1_55_0boost/lambda/detail/lambda_traits.hpp 89: Invalid template argument list
Error E2040 C:boost_1_55_0boost/lambda/detail/lambda_traits.hpp 91: Declaration terminated incorrectly
Error E2401 C:boost_1_55_0boost/lambda/detail/lambda_traits.hpp 256: Invalid template argument list
Error E2040 C:boost_1_55_0boost/lambda/detail/lambda_traits.hpp 257: Declaration terminated incorrectly
Error E2238 C:boost_1_55_0boost/lambda/detail/lambda_traits.hpp 408: Multiple declaration for 'bind_traits<null_type>'
Error E2344 C:boost_1_55_0boost/lambda/detail/lambda_traits.hpp 401: Earlier declaration of 'bind_traits<null_type>'
Error E2434 C:boost_1_55_0boost/lambda/detail/lambda_traits.hpp 435: Template declaration missing template parameters ('template<...>')
Error E2238 C:boost_1_55_0boost/lambda/detail/lambda_traits.hpp 435: Multiple declaration for 'bind_traits<R>'
Error E2344 C:boost_1_55_0boost/lambda/detail/lambda_traits.hpp 389: Earlier declaration of 'bind_traits<R>'
Error E2108 C:boost_1_55_0boost/lambda/detail/lambda_traits.hpp 440: Improper use of typedef 'Arg1'
Error E2299 C:boost_1_55_0boost/lambda/detail/lambda_traits.hpp 440: Cannot generate template specialization from 'bind_traits<R>'
Error E2428 C:boost_1_55_0boost/lambda/detail/lambda_traits.hpp 442: Templates must be classes or functions
Error E2108 C:boost_1_55_0boost/lambda/detail/lambda_traits.hpp 445: Improper use of typedef 'Arg1'
Error E2228 C:boost_1_55_0boost/lambda/detail/lambda_traits.hpp 445: Too many error or warning messages
*** 26 errors in Compile ***
Borland C++有很多标准遵从性问题,这可能是徒劳的。Boost在10年前正式放弃了对bcc32.exe的支持。
C++Builder XE确实提供了一个工作版本的boost,也许你可以考虑使用它而不是bcc 5.5。
相关文章:
- 选择特定版本的 Visual Studio 命令行工具包,并根据特定版本的C++运行时环境编译文件
- 如何通过命令行工具在 COIN-OR Cbc 中设置超时?
- createProcess 呼叫命令行工具
- 在应用程序内部调用linux命令行工具
- MAC c++ 控制交互式命令行工具
- 更新 OSX 命令行工具 6.3 后缺少C++标头<__debug>
- 基于Qt的OpenGL上下文命令行工具
- 是否可以将依赖项嵌入到命令行工具中
- 允许命令行工具使用 ofstream 创建文件
- 如何从 system() 使用 Visual Studio 2012 命令行工具
- 如何将命令行工具包装到应用中并正确退出它
- 如何在C++应用程序中使用GnuPG(不像命令行工具那样)
- 简单的HowTo在调试器中启动OSX上的C++命令行工具
- 使用Objective-C/C静态库进行c++命令行工具项目
- 无法用Visual Studio 2015命令行工具编译和链接简单的c++程序
- 在xcode中将命令行工具转换为.app
- 这是命令行工具的最佳设计
- 将GUI附加到命令行工具
- Xcode 4中的命令行工具构建版本,在构建可执行文件中包含图像存在问题
- 使用Boost库与Borland C++命令行工具