Articles of boost

使用gcc-4.1.2在RHEL5上使用Python 2.7.1升级1.44

啊! 我遇到了其中一个我真的无能为力的错误。 我已经构build/安装Python(2.7.1),并且已经构build/安装了针对该版本python的boost(1.44.0)。 我没有看到我的提升构build中的任何错误,一切都很好。 当我转向做我的应用程序生成有很多提升依赖,在我的C代码里面,我有一个调用Py_Init(…)我得到以下错误: Linking CXX executable ../../../myapp_exec ../../../../../config/cmake/platforms/../../../../3rdparty/2012/<pack>/rh5_x86_64_gcc-4.1.2/boost-1.44.0/lib/libboost_python-gcc41-1_44.so: undefined reference to `Py_InitModule4' collect2: ld returned 1 exit status gmake[2]: *** [myapp_exec] Error 1 我search了一下,但没有真正遇到一个解决scheme。 我在Windows上看不到这个问题 。 感谢任何人都可以在Linux(RHEL5)上分享他们的类似经历的经验,以及他们如何克服它。 我可以尝试使用老版本的Python(2.6.4或更早版本)来构buildboost-1.44.0。 在此先感谢您的时间和兴趣。 -T。

CMakeLists无法find新安装的HDF5?

我正在开发另一台计算机上的程序(第一个),并试图让它在我的新计算机上工作(第三个)。 当我去build和键入ccmake .. ,我得到这个错误: CMake Error at build/share/cmake/hdf5/hdf5-targets.cmake:67 (message): The imported target "hdf5" references the file "/home/myname/Desktop/MyProject/build/lib/libhdf5.a" but this file does not exist. Possible reasons include: * The file was deleted, renamed, or moved to another location. * An install or uninstall procedure did not complete successfully. * The installation package was faulty and contained […]

如何升级从源代码构build的Linux软件包?

我下载了Boost v1.42源码,然后将其安装在笔记本电脑上。 我想升级到v1.45(当前版本)。 我想知道我可以通过命令行来做到这一点。 这个问题适用于从源代码构build并安装在Linux机器上的任何包。 任何帮助是极大的赞赏。 干杯… 编辑1:我使用的发行版是我的笔记本电脑上的CentOS 5和我电脑上的Debian Lenny。

有没有办法检测Windows和Linux在C + +的文件名编码?

我试图做一个跨平台的应用程序在c + +字符转换。 我用UTF-8规则build立了一个转换表。 等式(A =诶)。 我使用boost库来获取文件名。 我的理解是,我必须将它们从编码X转换为UTF-8,执行转换,转换回编码X并保存新的文件名。 我如何找出文件系统正在使用的编码?

使用boost :: iostreams :: mapped_file

我很新的内存映射,并试图理解内存映射文件,以在我的项目(基于Linux)使用它们。 我的要求是写,然后从内存映射文件读取。 我写了一个示例程序,只写和它工作正常,但我有一些非常基本的怀疑,因为我不明白这个内存映射的基础正确。 #include <unordered_map> #include <boost/iostreams/device/mapped_file.hpp> using namespace boost::interprocess; using namespace std; typedef unordered_map<int, string> work; int main() { boost::iostreams::mapped_file_params params; params.path = "map.dat"; params.new_file_size = 100; params.mode = (std::ios_base::out | std::ios_base::in); boost::iostreams::mapped_file mf; mf.open(params); work w1; w1[0] = "abcd"; w1[1] = "bcde"; w1[2] = "cdef"; work* w = static_cast<work*>((void*)mf.data()); *w = w1; mf.close(); […]

在Linux和Windows上,进程pipe理代码的performance有所不同 – 为什么?

(上下文)我正在开发一个基于BitTorrent Sync的跨平台(Windows和Linux)应用程序,用于在计算机之间分发文件。 我已经在C#中完成了,现在正在向C ++移植。 BTSync可以在API模式下启动,为此,必须启动“ btsync ”可执行文件,将configuration文件的名称和位置作为parameter passing。 在这一点上,我最大的问题是让我的应用程序处理可执行文件。 在寻找一个跨平台的stream程pipe理库的时候,我已经find了Boost.Process ,并决定尝试一下。 看来v0.5是最新的工作版本,正如有证据表明的那样,有很多人在使用它。 我按如下方式实现了库(仅适用于相关代码): 文件: test.hpp namespace testingBoostProcess { class Test { void StartSyncing(); }; } 文件: Test.cpp #include <string> #include <vector> #include <iostream> #include <boost/process.hpp> #include <boost/process/mitigate.hpp> #include "test.hpp" using namespace std; using namespace testingBoostProcess; namespace bpr = ::boost::process; #ifdef _WIN32 const vector<wstring> EXE_NAME_ARGS = […]

在Windows上从Unix开发C ++,本地函数调用?

我想问一些关于在Unix上编写C ++而不是Windows的具体问题。 在Windows中,为了调用本地操作系统函数,您通常会链接到一个.dll或包含windows.h。同样,您如何引用Unix中的底层操作系统函数? 是否有一个在Unix内的所有底层操作系统function的参考指南? (这样可以看到有什么function可用)。 什么是“包含”boost库的最佳方法? 要使用像eclipse C / C ++版本那样的IDE,并且像在Windows上一样包含boost? 谢谢

尽pipe使用了BOOST_ROOT,但找不到我本地的Boost发行版而不是已安装的发行版

我有一个关于FindBoost的问题。 我试图从我自己的1.49升级版本的HPC(redhat)上selectboost组件,而这个组件已经预先安装了默认的增强版本1.47。 我想独占使用,我一直试图使用BOOST_ROOT作为cachingvariables,内部cachingvariables和使用set(ENV {BOOST_ROOT})的环境variables,但没有任何工作:我可以看到BOOST_ROOT (指向1.49.0版本),但似乎对FindBoost生成的库path没有影响:它们都指向1.47.0版本的库。 我正在尝试这个: # I give a chance to the user to set BOOST_PATH to the local boost distribution before calling FindBoost if( NOT DEFINED BOOST_PATH) message(STATUS " Set BOOST_PATH to a specific Boost distribution if needed.") set(BOOST_PATH "Default" CACHE PATH "Set the path to a specific Boost distribution if not default.") […]

Boost CRC和linux / lib / crc-ccitt.c中的区别

我有两个来源来计算看似相同的crc值。 我不明白为什么'boost / crc.hpp'的实现不同于'linux / lib / crc-ccitt.c'的实现。 crc-ccitt.c 提升 这是一个例子,说明了这个问题。 由于我的计算机上没有Linux内核源代码,所以时间更长。 它会编译,如果你把它连接到boost。 问题在于Linux和boost并不同意crc的价值。 Linux的来源指出: 多项式… 0x8408。 添加隐含的x ^ 16,并且你有标准的CRC-CCITT。 我不知道如何应用x ^ 16,但我不知道如何编辑这个问题来反映偏离的多项式。 #include <stdio.h> #include <boost\crc.hpp> typedef unsigned short u16; typedef unsigned char u8; /* * linux/lib/crc-ccitt.c * * This source code is licensed under the GNU General Public License, * Version 2. See […]

Boost Logging显示linux thread id全部为0

我正在尝试将日志string发送到最新版本的boost 1.57中的文件,由于某些原因,在linux上,线程ID始终设置为0。 我有一种感觉,它可能与使用本地线程,而不是提升线程有关 – 但这并不能解释为什么它在Windows环境中工作。 任何帮助,将不胜感激。 这是我在logger.cpp文件中的初始化代码。 编辑 :下面显示我还包括我的Logger.h显示我使用的logging器的types – 有效地使用BOOST_LOG_CHANNEL_SEVmacroslogin到 boost :: log :: sources :: severity_channel_logger_mt <boost :: log :: trivial :: severity_level> #include <boost/log/core.hpp> #include <boost/log/sinks/sync_frontend.hpp> #include <boost/log/sinks/text_ostream_backend.hpp> #include <boost/log/support/date_time.hpp> #include <boost/log/expressions.hpp> #include <boost/log/utility/setup/console.hpp> #include <boost/log/attributes/scoped_attribute.hpp> #include <boost/log/expressions/formatters/date_time.hpp> #include <boost/log/utility/setup/common_attributes.hpp> #include <boost/log/utility/manipulators/add_value.hpp> #include <boost/log/sources/severity_channel_logger.hpp> . . . namespace fs = boost::filesystem; namespace […]