2012-11-17 15 views
5

Hej, jestem całkiem nowy, aby wzmocnić bibliotekę c/C++. Pobrałem bibliotekę boost i zbudowałem bibliotekę. Stworzyłem bardzo prostą bibliotekę Pythona w C++ przy użyciu interfejsu boost (w rzeczywistości jest to przykładowy kod podany w dokumentacji). Zbudowałem go do pliku dll. W dokumentacji czytamy, że ta biblioteka dll jest narażona na działanie pythona, a oni po prostu pokazują funkcję importu w pythonie i dołączają do utworzonej biblioteki. Nie rozumiem, jak odsłonić tę bibliotekę dla Pythona i wczytać bibliotekę w tradycyjny sposób ("import"). W przypadku jeśli chcesz spojrzeć na kod, to tutaj jest:Budynek rozbudowy Pythona z doładowaniem

#include <boost/python.hpp> 

char const* greet() 
{ 
    return "hello, world"; 
} 

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

Proszę pomóc naprawdę chcę budować aplikacje z C/C++ i Python. ja po prostu chcesz używać hello_ext jak:

>>>import hello_ext 
>>>print hello_ext.greet() 

Dziękuję.

+0

Czy twoja kompilacja produkuje plik DLL? Czy dostaję błędy? Co stanie się, gdy uruchomisz 'import hello_ext'? – Xymostech

+0

Tak, moja kompilacja wyprodukowała bibliotekę dll i kiedy importuję hello_ext interpreter podnosi ImportError: Brak modułu o nazwie hello_ext. – Xk0nSid

Odpowiedz

1

I built it into a dll file. In the documentation it reads that this dll is exposed to python and they just show the import function in python and include the created library. I don't understand how to expose that dll to python and load the library inside in tradition ('import') manner.

Musisz umieścić tę bibliotekę współdzieloną w the module search path. Można to osiągnąć na kilka sposobów.

Jednym z nich jest:

import sys 
sys.path.append("<directory-where-hello_ext-module-resides>") 
import hello_ext 

Twoja biblioteka wspólna powinna nazywać hello_ext.dll.

+0

Ta biblioteka współużytkowana (DLL) znajduje się w folderze DLL Pythona. Ale wciąż próbowałem i dodałem ten katalog z interpretera, ale nadal mówi, że moduł nie istnieje. W każdym razie, dzięki za odpowiedź. – Xk0nSid

+0

@ user1544053 Jaka jest dokładna nazwa Twojej biblioteki DLL? –

+0

Jest to PythonDll.dll i znajduje się w "Python27/DLLs/PythonDll.dll". – Xk0nSid