使用boost python的hello tutorial

安裝BOOST: http://www.boost.org/doc/libs/1_54_0/more/getting_started/index.html

增加C++的include directory使之能找到pyconfig.h等文件。

>> export CPLUS_INCLUDE_PATH=/usr/include/python2.7/:$CPLUS_INCLUDE_PAYH

寫一個簡單的測試程序:

>> cat hello.cpp

#include <iostream>

using namespace std;

void say_hello(const char* name) {
    cout << "Hello " <<  name << "!\n";
}

int main(){return 0;}

#include <boost/python/module.hpp>
#include <boost/python/def.hpp>
using namespace boost::python;

BOOST_PYTHON_MODULE(hello)
{
    def("say_hello", say_hello);
}

編譯:
>> g++ hello.cpp -lboost_python -lpython2.7 -shared -fPIC -o hello.so
>> ls
出現有hello.so
python中的用法:

>> python
Python 2.7.3 (default, Apr 10 2013, 06:20:15)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import hello
>>> hello.say_hello('Bill')
Hello Bill!
>>>

使用自己的toolset, c++11, c++0x來編譯boost

使用自己的toolset, c++11, c++0x來編譯boost

在解壓出的boost文件夾中tools/build/v2/user-config.jam文件中添加如下configuration

# Configure gcc-4.8
using gcc 
    : 4.8 
    : "/usr/bin/g++-4.8"
    : <cxxflags>"-std=c++11 -march=native -flto -O3" <linkflags>"-flto -O3"                                       
;

然後,使用./b2 toolset=gcc-4.8來編譯BOOST即可。

如何在C++03中模擬C++11的右值引用std::move特性

最後修改時間:2013.03.19 -- 13:08

引言

衆所周知,C++11的新特性中有一個非常重要的特性,那就是rvalue reference,右值引用。
引入它的一個非常重要的原因是因爲在C++中,常常右值,通俗地講"在等號右邊的"臨時變量或者臨時對象,我們是無法得到它的修改權限的。

由於類的構造和析構機制,往往產生的臨時變量或臨時對象的拷貝構造及析構,會帶來不少的時間、資源消耗。
也同樣由於這樣的限制,有不少C++程序員依然保有一部分C風格的寫法,例如將A = factory(B, C);之中的A,以函數引用參數的形式傳入等等。但在C++11之後,我們可以完全保留C++的寫法,將右值明顯指出,就可以完成"直接獲得臨時對象"的資源的權限,例如A = std::move(B); 或者A = factory(B, C);,這時候就"幾乎完全"省去了拷貝的過程,通過直接獲取由factory(B, C)造出的臨時對象中的資源,達到省略拷貝的過程,最終析構的臨時對象,實際上只是一具空空的皮囊。

Read more

C++ High precision clock calculation 高精度计时器

本计时器精确到微秒。目前版本V1.0.0

Download:Clock-V1.0.0.7z

 

Read more

用CMD控制台编译Visual Studio 2010 C++

用多了VS2010的人,大多都开始对它的启动速度略慢感到烦躁了。

如果我只是写一个小文件,而必须开个这么大的IDE,就会略感麻烦、痛苦。

Read more