2016-03-15 3 views
0

Я хотел бы сделать эквивалент печати в python из библиотеки, которую я написал на C++. Я использую Boost 1.60.0 и Python 2.7.Как печатать на терминал Python с Boost :: Python

Я нашел следующие сайты: Mantid и WikiBooks. Из того, что я понял, этот код должен работать, но ничего не печатается.

CPP файл

void greet() 
{ 
    std::cout<<"test_01\n"; 
    std::cout<<"test_02"<<std::endl; 
    printf("test_03"); 
} 
BOOST_PYTHON_MODULE(PythonIntegration) 
{ 
    def("greet", greet); 
} 

ого файл

import PythonIntegration 
PythonIntegration.greet() 

Я проверил, если функция была вызвана, сделав его вернуть что-то, и она работает, но до сих пор ничего не печатается.

Спасибо за вашу помощь

ответ

1

Это привет мир пример, кажется, делает именно то, что вы хотите: https://en.wikibooks.org/wiki/Python_Programming/Extending_with_C%2B%2B

В основном ...

C++

#include <iostream> 

using namespace std; 

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

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

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

Теперь в настройках .py

#!/usr/bin/env python 

from distutils.core import setup 
from distutils.extension import Extension 

setup(name="PackageName", 
    ext_modules=[ 
     Extension("hello", ["hellomodule.cpp"], 
     libraries = ["boost_python"]) 
    ]) 

Теперь вы можете сделать это:

python setup.py build 

Затем в командной строке: питон

>>> import hello 
>>> hello.say_hello("World") 
Hello World! 
+0

Совершенно верно. Ваш пример очень похож на пример hello world здесь ... http://www.boost.org/doc/libs/1_55_0/libs/python/doc/tutorial/doc/html/index.html – LawfulEvil

+0

Вы на самом деле не являетесь обеспокоенный тем, что вы вызываете свою функцию (что это такое), вы больше обеспокоены/обеспокоены перенаправлением stdout C++ на python и печать его с python? – LawfulEvil

+0

Да, это так! – Heckel

Смежные вопросы