swig - Gakgu/Gakgu.github.io GitHub Wiki

개요

c/c++ 코드를 다른 언어에서 사용할 수 있게 바인드해주는 도구.

예제

Python

  • animal.cpp

      #include "animal.h"
      
      Animal::Animal()
      : m_speed(10.0)
      {
      }
      
      float Animal::GetSpeed()
      {
        return m_speed;
      }
      
      void Animal::SetSpeed(float speed)
      {
        m_speed = speed;
      }
    
  • animal.h

      class Animal
      {
      public:
        Animal();
        float GetSpeed();
        void SetSpeed(float speed);
      private:
        float m_speed;
      };
    
  • animal.i

      %module animal
      %{
        #include "animal.h"
      %}
      
      %include "animal.h"
    
  • Makefile - mingw in windows

      TARGET 		= _animal.pyd
      FLAGS 		= -fPIC -shared
      INCLUDE_PATH 	= -IC:\Python36\include
      LIBRARY_PATH	= -LC:\Python36\libs
      LIBRARY 	= -lpython36
      SOURCE 		= animal.cpp\
      		  animal_wrap.cpp
      
      target: 
      	swig -c++ -python -o animal_wrap.cpp animal.i
      	g++ $(FLAGS) $(INCLUDE_PATH) $(LIBRARY_PATH) -o $(TARGET) $(SOURCE) $(LIBRARY)