2012-06-14 16 views
7

Mam wielki kłopot używając mojego kodu C++ z Visual C++ (zawijany przez boost) w Pythonie.Przykład Boost Python Hello World nie działa w Pythonie

Dobra, więc używam narzędzi, którymi się posługuję: Visual Studio 2010, BoostPro 1_47, Windows 7 i Python 2.7 (32-bit).

Mam następujący kod, który kompiluje ładnie w Visual Studio 2010:

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

struct World 
{ 
    void set(std::string msg) { this->msg = msg; } 
    std::string greet() { return msg; } 
    std::string msg; 
}; 


BOOST_PYTHON_MODULE(hello) 
{ 
    class_<World>("World") 
      .def("greet", &World::greet) 
      .def("set", &World::set); 
} 

Jest w formacie: Win32 Console Application >>> Empty Project/DLL.

W „Właściwości projekt”:

VC++ DIRECTORIES: 
    I added: 
    >>> INCLUDE DIRECTORIES: C:\Program Files\boost\boost_1_47;C:\Python27\include  . 
    >>> LIBRARY DIRECTORIES: C:\Program Files\boost\boost_1_47\lib;C:\Python27\libs 

Wszystko to sprawia, że ​​C++ kompilacji ale wtedy nie mogę do niego dostęp z poziomu Pythona.

To co Python mówi, gdy próbuję użyć modułu:

">>> import hello 
Traceback (most recent call last): 
    File "<pyshell#0>", line 1, in <module> 
    import hello 
ImportError: No module named hello 

Więc myślę, że moje pytanie jest ... Jak mogę dostać Python go znaleźć ???

Po skompilowaniu kodu C++ tworzy plik DLL. Czy muszę zmienić lokalizację pliku? Jeśli tak, to gdzie mam go umieścić?

Twoja pomoc będzie bardzo mile widziane

Odpowiedz

11

AFAIK trzeba zmienić rozszerzenie DLL do .pyd lub inaczej Python nie będzie w stanie go załadować. Myślę, że możesz ustawić opcję kompilacji, aby automatycznie ustawić rozszerzenie w VS, ale nie wiem na pewno.

Upewnij się również, że utworzone rozszerzenie znajduje się gdzieś na PYTHONPATH, ścieżka, python będzie szukać modułów do załadowania.

+0

Dziękuję Constantinius! : D W końcu zmusiłem to do pracy po godzinach i godzinach próbowania pobierania boost.python. – user1449530

+0

czy możesz podać przepis na to, co zrobiłeś, aby odnieść sukces? – Noam

+0

Musiałem również dodać do Boost Pythona pliki * .lib i * .dll do katalogu PATH –

Powiązane problemy