Articles of 提升

可能的编译器错误:在两台机器之间使用英特尔编译器使用boost bessel函数的奇怪结果?

我正在尝试在项目中使用boost的bessel函数(cyl_bessel_j)。 但是,我发现该函数在2000年左右调用它之后会返回带有错误符号的结果。 我已经在两台机器之间进行了testing,其中一台是CentOS 5.8(Final)机器,奇怪的是它工作的很好,另一台是RHEL 6.3(圣地亚哥)的机器。 两台机器都使用Boost 1.50.0和13.1.3 20130607 Intel编译器。 CentOS机器使用gcc 4.1.2 20080704,而RHEL机器使用gcc 4.4.6 20120305。 这是我的代码: template<typename FloatType> FloatType funcT(FloatType z, FloatType phi, int n, int m, int p) { using namespace boost::math; FloatType sqrt2PiZ = sqrt((2 * M_PI)/z); FloatType nrmLeg = normalizedLegendre(n,m,-sin(phi)); FloatType besselJ = cyl_bessel_j(p + 0.5, z); std::cout << " " << p […]

为什么Boost.Python示例构build失败?

我现在非常沮丧,请帮助我: 在下载Boost1.55并在Linux12.04LTS安装上解压后,我可以用$ bootstrap.sh和$ ./b2来构build它。 没有发生错误,所以我认为一切都正确。 现在,正如本教程中所解释的那样,我在boost_1_55_0/libs/python/example/tutorial目录中调用了$ bjam ,但似乎不起作用。 我得到了有关boost和bjam版本不匹配的警告,文件“link.jam”被认为是丢失了。 另外,本教程在我的主目录中提到了一个user-config.jam文件,这个文件在我系统上的任何地方都不存在。 关于这个问题,我还发现了其他的一些问题,但是大部分的问题都是在构build完成的时候提出问题的,或者是有更多的错误输出。 less数与我的问题相似的解决scheme不适合我。 我究竟做错了什么? $ bjam调用的输出: felix@felix-Ubuntu-VBox:~/boost_1_55_0/libs/python/example/quickstart$ bjam warning: mismatched versions of Boost.Build engine and core warning: Boost.Build engine (bjam) is 03.1.19 warning: Boost.Build core (at /home/felix/boost_1_55_0/tools/build/v2) is 2011.12-svn link.jam: No such file or directory /home/felix/boost_1_55_0/tools/build/v2/util/path.jam:458: in path.makedirs rule MAKEDIR unknown in module path. /home/felix/boost_1_55_0/tools/build/v2/build/configure.jam:233: in […]

为什么boost的managed_mapped_file :: shrink_to_fit在Windows和Linux上的行为有所不同?

这是关于C ++库的提升。 managed_mapped_file :: shrink_to_fit函数在Linux和Windows上的工作方式不同。 在Linux上,即使目标实例存在,该函数也会成功。 但是,在Windows上,如果目标实例存在,则此function将失败。 这是正确的行为? 做同样的行为似乎是正确的,这是一个错误? 我把下面的示例代码。 编译环境 升压:version.1.65.1 视窗 VisualStudio2017 WSL(Ubuntu16.04) Linux的 UbuntuServer17.10, 铛++ 5.0, 克++ 7.2.0 编译 铿锵声++ – 5.0 -std = c ++ 1z ./test.cpp -o test -lpthread #define BOOST_DATE_TIME_NO_LIB #include <boost/interprocess/managed_mapped_file.hpp> #include <boost/interprocess/file_mapping.hpp> #include <boost/interprocess/allocators/allocator.hpp> #include <vector> #include <iostream> namespace bip = boost::interprocess; using intAlloc = bip::allocator<int, bip::managed_mapped_file::segment_manager>; […]

如何调用boost multi_index元素的非常量成员函数

我发布这个,因为我无法理解一点提升教程如何工作。 我有一个类,其对象是一个boost multi_index容器的元素。 我需要使用成员函数更新对象的成员variables。 我不知道该怎么做。 请问你能帮帮我吗。 我准备了一个简单的例子: #include <string> #include <iostream> #include <boost/multi_index_container.hpp> #include <boost/multi_index/member.hpp> #include <boost/multi_index/ordered_index.hpp> #include<vector> using boost::multi_index::multi_index_container; using boost::multi_index::ordered_non_unique; using boost::multi_index::ordered_unique; using boost::multi_index::indexed_by; using boost::multi_index::member; class employee_entry { public: employee_entry( const std::string& first, const std::string& last, long id): first_name_(first), last_name_(last), id_(id) {} void change(){id_++;}//causing the problem std::string first_name_; std::string last_name_; std::vector<int> mySet; […]

修改构buildboost的默认编译器path

我有一个旧版本的升压1.33.1。 我想用一个自定义的gcc二进制文件构build它,这个二进制文件位于默认path之外。 我找不到网页上的页面,所以我粘贴了gcc-tools.jam表单tools/build/v1/gcc-tools.jam的第一部分。 版权(c)2001 David Abrahams。 # Copyright (c) 2002-2005 Rene Rivera. # Distributed under the Boost Software License, Version 1.0. # (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) # The following #// line will be used by the regression test table generation # program as the column heading for HTML tables. Must not include version […]

检查input和睡眠提升线程

我试图build立一个线程,检查用户input,如果input等于“退出”,它会closures所有其他线程。 我使用cin的方式似乎停止了线程。 线程应该运行,检查用户input,如果有,并等于“退出”,closuresrunProcesses 。 这是我的代码不能按预期工作,因为“新行停止”从不打印,“运行”只打印一次: void check_for_cin() { while ( runProcesses ) { cout << "running"; string input; std::getline( std::cin, input ); //while ( std::getline( std::cin, input ) ) { if ( !input.empty() ) { if ( input == "exit" ) { runProcesses = false; cout << "exiting" << ", run processes: " << runProcesses; […]

当前tz的夏令时

在我的c ++软件中,我已经在某些地方和当地时间使用了Boost。 好的,现在我的问题是如果在我的机器是活跃或不是DST检查。 随着代码的后续部分,我只能知道与UTC时间的差异。 在我的情况下,差异是2小时,因为是积极的DST ptime tLoc = second_clock::local_time(); ptime tUTC = second_clock::universal_time(); time_duration tDiff = tUTC – tLoc; local_time_zone = tDiff.hours(); 我认为布尔funcion has_dst()可以帮助,对不对? 我的系统是Debian GNU / Linux。 谢谢

升压asio计时器不阻止读取呼叫

我有以下的服务器代码。 等待客户端连接,一旦客户端连接,它将启动线程接收客户端连接的数据,主线程将等待另一个客户端连接。 这段代码工作正常。 现在我必须指定该服务器将等待一段时间,例如10秒,以从连接的客户端接收数据。 否则服务器将在指定时间内没有收到数据的情况下closures通讯。 我已经实现了相同的计时器,但不知何故,它不工作, timer_callback不会在时间过去后调用。 #include <ctime> #include <iostream> #include <string> #include <boost/asio.hpp> #include <sys/socket.h> #include <unistd.h> #include <string> #include <boost/bind.hpp> #include <boost/thread.hpp> #include <boost/date_time.hpp> using namespace std; using boost::asio::ip::tcp; void run(boost::shared_ptr<tcp::socket> my_socket) { while (1) { char buf[128]; boost::system::error_code error; size_t len = my_socket->read_some(boost::asio::buffer(buf, 128), error); std::cout << "len : " << […]

提升Python:停止解释器

在 C ++中通过Boost Python调用Python方法之后,有没有办法阻止正在运行的Python解释器? 我想打断电话有两个原因: 如果超时期限过期(即脚本运行时间过长)。 如果另一个(并行运行)Python脚本失败。 我在网上和Boost文档中的search没有发现任何东西,但另一方面,我有时很难在Boost文档中find正确的段落。 我从这个StackOverflow问题中得到的唯一“种类的想法”。 这个想法是发送一个信号给脚本,但由于解释器运行在我的C ++过程中,这可能不是一个可行的select?! 我正在做以下事情: const boost::filesystem::path pythonScriptPath = /* Path to the script I want to execute a function from. */ const std::string pythonFunctionName = /* Name of the Python function to call. */; boost::python::object mainModule = boost::python::import("__main__"); boost::python::object mainNameSpace = mainModule.attr("__dict__"); boost::python::dict locals; locals["moduleName"] = pythonScriptPath.stem().string(); […]

C ++提升错误

我正在build立一个基于这个快速因子库的代码,它取决于boost和mpir。 我正在运行Ubuntu 14.04并使用Netbeans 8.0.2。 为了简单地testing库中的#include语句,我做了这个愚蠢的代码: #include <iostream> #include <mpir.h> #include <primeswing.h> #include <xmath.h> /* * */ int main() { long x = 4; std::cout << x; return 0; } 当我尝试编译它但是我得到以下错误 "/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf make[1]: Entering directory `/home/arengorn/NetBeansProjects/BA' "/usr/bin/make" -f nbproject/Makefile-Debug.mk dist/Debug/GNU-Linux-x86/ba make[2]: Entering directory `/home/arengorn/NetBeansProjects/BA' mkdir -p dist/Debug/GNU-Linux-x86 g++ -o dist/Debug/GNU-Linux-x86/ba build/Debug/GNU-Linux-x86/main.o […]