Narzędzia użytkownika

Narzędzia witryny


boost_python

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
boost_python [2008/04/14 20:35]
kamituel
boost_python [2008/04/14 21:03]
kamituel
Linia 100: Linia 100:
         virtual void metoda ( std::string suffix ) {         virtual void metoda ( std::string suffix ) {
                 this->​get_override("​metoda"​)();​                 this->​get_override("​metoda"​)();​
 +                // Dla kompilatora MSVC należy zamienić powyższą linijkę na:
 +                // this->​get_override("​metoda"​).ptr();​
         }         }
 }; };
Linia 127: Linia 129:
 I w końcu - zwróćmy uwagę na brak definicji metody ''​metoda''​ - jako że nasza klasa dziedziczy po ''​Costam_0'',​ i w tamtej klasie tę metodę udostępniliśmy,​ teraz już nie musimy tego robić.\\ ​ I w końcu - zwróćmy uwagę na brak definicji metody ''​metoda''​ - jako że nasza klasa dziedziczy po ''​Costam_0'',​ i w tamtej klasie tę metodę udostępniliśmy,​ teraz już nie musimy tego robić.\\ ​
  
-Ostatnia z klas udostępniona może być w ten sposób:+Ostatnia z klas udostępniona może być w taki sposób:
 <code cpp> <code cpp>
         class_<​Costam_B,​ bases<​Costam_A>​ >​("​CostamB",​ init<​std::​string>​())         class_<​Costam_B,​ bases<​Costam_A>​ >​("​CostamB",​ init<​std::​string>​())
Linia 197: Linia 199:
   * Mamy dostęp do biblioteki C++, ale nie mamy do niej źródeł   * Mamy dostęp do biblioteki C++, ale nie mamy do niej źródeł
 W tym ostatnim przypadku jedyne co nam będzie potrzebne to pliki nagłówkowe tej bilioteki i parę minut czasu. W tym ostatnim przypadku jedyne co nam będzie potrzebne to pliki nagłówkowe tej bilioteki i parę minut czasu.
-Weźmy klasy z poprzedniego przykładu, rozdzielmy je na plik nagłówkowy i źródłowy. ​Źródłowy skompilujmy do postaci biblioteki współdzielonej:​+Weźmy klasy z poprzedniego przykładu, rozdzielmy je na plik nagłówkowy i źródłowy. ​ 
 + 
 +Plik nagłówkowy wyglądać może tak: 
 +<code cpp> 
 +class Costam_0 { 
 +        public: 
 +                virtual void metoda ( std::string suffix ) = 0; 
 +                virtual ~Costam_0 (); 
 +}; 
 + 
 +class Costam_A : public Costam_0 { 
 +        public: 
 +                Costam_A();​ 
 +                Costam_A( std::string nazwa );  
 +                virtual void metoda ( std::string suffix );  
 +                std::string daj_nazwe () const; 
 +                void ustaw_nazwe ( const std::string nazwa );  
 +        protected:​ 
 +                std::string nazwa_; 
 +}; 
 + 
 +class Costam_B : public Costam_A { 
 +        public: 
 +                Costam_B();​ 
 +                Costam_B( std::string nazwa ); 
 +                virtual void metoda ( std::string suffix ); 
 +                Costam_B&​ operator+ ( std::string x ); 
 + 
 +                std::string x_; 
 +}; 
 +</​code>​ 
 + 
 +Plik źródłowy skompilujmy do postaci biblioteki współdzielonej:​
 <​code>​ <​code>​
 $ g++ -Wall -shared p2-shared.cpp -o p2-shared.o $ g++ -Wall -shared p2-shared.cpp -o p2-shared.o
Linia 231: Linia 265:
 } }
 </​code>​ </​code>​
-i skompilujmy go **nie zapominając** o linkowaniu z naszą biblioteką ''​p3-shared.o'':​+i skompilujmy go **nie zapominając** o linkowaniu z naszą biblioteką ''​p2-shared.o'':​
 <​code>​ <​code>​
 g++ -Wall -shared -I/​usr/​include/​boost/​ -I/​usr/​include/​python2.5/​ /​usr/​lib/​libboost_python-mt.so p2-shared.o p2.cpp -o p2.so g++ -Wall -shared -I/​usr/​include/​boost/​ -I/​usr/​include/​python2.5/​ /​usr/​lib/​libboost_python-mt.so p2-shared.o p2.cpp -o p2.so
 </​code>​ </​code>​
 I gotowe! Możemy teraz uruchomić skrypt z poprzedniego przykładu. A to wszystko bez dostępu do plików źródłowych! I gotowe! Możemy teraz uruchomić skrypt z poprzedniego przykładu. A to wszystko bez dostępu do plików źródłowych!
 +\\ (w rzeczywistej sytuacji plik p2-shared.o byłby biblioteką której źródeł nie mamy - jak widać nawet pomimo tego udało się wystawić ją jako moduł Pythona)
  
 ==== Więcej informacji ==== ==== Więcej informacji ====
boost_python.txt · ostatnio zmienione: 2008/04/16 07:24 przez kamituel