2011-04-08 58 views
1

我在Visual Studio 2005中遇到了一些與STLPort 5.1.0和Boot.Python 1.46.1非常嚴重的兼容性問題,我想知道是否有其他方法讓Python調用C++代碼。在Visual Studio 2005中使用Python獲得C++擴展的無痛方法

萬一有人能幫助: 下面的代碼compiels和運行沒有問題: 字符常量*迎(){ 回報 「你好,世界」; }

BOOST_PYTHON_MODULE(hello_ext) 
{ 
    using namespace boost::python; 
    def("greet", greet); 
} 

,當我做一些稍微複雜的鏈接錯誤啓動:

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

struct World 
{ 
    std::string msg; 
    double mypi; 

    World(std::string msg): msg(msg) {} // added constructor 
    void set(std::string msg) { this->msg = msg; } 
    std::string greet() { return msg; } 
    double get() const { return mypi; } 
    void setter(double mypi) { this->mypi = mypi; } 


}; 

BOOST_PYTHON_MODULE(hello_ext) 
{ 
    class_<World>("World", init<std::string>()) 
     .def("greet", &World::greet) 
     .def("set", &World::set) 
     .def_readonly("msg", &World::msg) 
     .def_readwrite("mypi", &World::mypi) 
     .add_property("rovalue", &World::get) 
     .add_property("value", &World::get, &World::setter) 
    ; 
} 

不幸的是,我一直很沮喪,我已經缺胳膊少腿我的代碼到一個地步,我可以重現鏈接錯誤,因爲出現其他編譯錯誤。但是,這些錯誤會將未定義符號的錯誤鏈接到以「stlp」開頭的位置,我假定它指的是STLPort方法。

所以在這一點上,我只是尋找一種替代Boost的方法來處理兼容性問題。

回答

0

嘗試使用SWIG。我記得它很簡單。