Форум сайта python.su
Да уж, я действительно в С++ не силен, хотя целую книжку Страуструпа осилил, но всю жизнь думал, что .h и .cpp - это всего лишь формальность.
Кажется, эта проблема меня миновала. Но теперь новая вылезла, хоть я все упростил до безобразия.
Npc.h:
class Npc{
public:
int hello(){ return 42; }
};
from pyplusplus import module_builder
mb = module_builder.module_builder_t(["Npc.h"], gccxml_path="/usr/bin/gccxml")
mb.build_code_creator( module_name='Wrap' )
mb.write_module( './Wrap.cpp' )
// This file has been generated by Py++.
#include "boost/python.hpp"
#include "Npc.h"
namespace bp = boost::python;
BOOST_PYTHON_MODULE(Wrap){
bp::class_< Npc >( "Npc" )
.def(
"hello"
, (int ( ::Npc::* )( ) )( &::Npc::hello ) );
}
using gcc ;
using python ;
python-extension Wrap :
Npc.h
Wrap.cpp
;
Офлайн
а вы boost собирали? Должен быть установлен в системе или через bjam install или через package manager. Не находит именно имя из boost_python_<version>.so Или не видит этот файл, или его просто нет. Или он собран с несовместимыми настройками.
Офлайн
У меня дистрибутив Gentoo, версии boost 1.35 и 1.39, /usr/lib/boost-1_35(39)/libboost_python.so имеется, собран вот с такими флагами. Bjam тоже соответствующих версий с флагом python.
Меня смущает, что модуль собирается в режиме debug (и я не знаю как это поменять), а то вот тут прочитал, что должно быть соответствие. Может в этом проблема?
Извиняюсь, если замучил вопросами, просто мне очень нужно научиться, но я не знаю в какую сторону двигаться
Офлайн
Во первых, в libs/python/example/tutorial - примитивный пример. Попробуйте его.
Во вторых, bjam использовать не обязательно - это всего лишь “еще один make”. Можете собирать чем вам удобно.
Еще стоит запустить bjam –help, если хотите таки с bjam.
Properties:
toolset=toolset Indicates the toolset to build with.
variant=debug|release Select the build variant
link=static|shared Whether to build static or shared libraries
threading=single|multi Whether to build single or multithreaded binaries
runtime-link=static|shared
Whether to link to static or shared C and C++ runtime.
Офлайн
Преогромнейшее спасибо, Андрей! Действительно имена не находились потому что надо было указать путь к библиотеке в jam файле, вроде того:
project : requirements <library>/usr/lib/boost-1_35/libboost_python.so ;
Офлайн
Кушайте на здоровье. Позже, наверное, наткнетесь еще на рад сложностей:
- как все правильно распихать?
- как работать с python <=> C++ conversions, что нужно и что нет? policy там всякие…
Офлайн