2017-02-15 3 views
0

私は定期的にboost.python & MSVC 12(動的リンク)を使ってPythonにC++クラスを公開しています。最近私は "docstring_options"クラスを使ってドキュメントを取り込もうとしています。ドキュメントの例が正常に動作:boost.python docstring_optionsでクラスを公開するときのMSVC12リンカーエラー

http://www.boost.org/doc/libs/1_54_0/libs/python/doc/v2/docstring_options.html

しかし、私はクラスが含まれており、私はリンカエラーを取得し、それを公開する場合:

エラーLNK2019:未解決の外部シンボル「無効__cdeclブースト:: throw_exception(クラスSTD :: exception const &) "public:__thiscall boost :: detail :: shared_count :: shared_count(void *、struct boost :: python ::)で参照される(throw_exception @ boost @@ YAXABVexception @ std @@@ Z) converter :: shared_ptr_deleter) "

私はおそらく何かがあると確信していますシンプルな私は行方不明ですが、私はそれを把握することはできません。

事前に感謝します。

このエラーを示すブーストのサンプルコードからスプライスされたサンプルコードです。

#include <string> 
#include <boost/python/module.hpp> 
#include <boost/python/def.hpp> 
#include <boost/python/args.hpp> 
#include <boost/python/docstring_options.hpp> 
#include <boost/python.hpp> 
struct World 
{ 
void set(std::string msg) { this->msg = msg; } 
std::string greet() { return msg; } 
std::string msg; 
}; 
int foo1(int i) { return i; } 
int foo2(long l) { return static_cast<int>(l); } 
int bar1(int i) { return i; } 
int bar2(long l) { return static_cast<int>(l); } 
namespace { 
void wrap_foos() 
{ 
    using namespace boost::python; 
    def("foo1", foo1, arg("i"), "foo1 doc"); 
    def("foo2", foo2, arg("l"), "foo2 doc"); 
} 
void wrap_bars() 
{ 
    using namespace boost::python; 
    bool show_user_defined = true; 
    bool show_signatures = false; 
    docstring_options doc_options(show_user_defined, show_signatures); 
    def("bar1", bar1, arg("i"), "bar1 doc"); 
    def("bar2", bar2, arg("l"), "bar2 doc"); 

    class_<World>("World") 
     .def("greet", &World::greet) 
     .def("set", &World::set) 
    ; 

} 
} 
BOOST_PYTHON_MODULE(boost_py_doc_demo) 
{ 
boost::python::docstring_options doc_options(false); 
wrap_foos(); 
wrap_bars(); 
} 

答えて

0

最新バージョンのboost(1.63)をコンパイルしましたが、問題はなくなりました。私の古い図書館は何らかの形で不完全であったと思います。

関連する問題