2016-11-06 8 views
3

SWIGを使用して非常に単純なC++クラスをワーピングしています。 boost ptimeはそのC++クラスで使用されます。boost :: posix_time :: ptime変換のSWIGエラー

私は、コマンドに

swig -c++ -python example.i 

を実行しようとするとエラーがあります:

example.h:7: Warning 315: Nothing known about 'boost::posix_time::ptime'. 
example.h:7: Warning 315: Nothing known about 'boost::posix_time::ptime'. 

どのように私はこの問題を解決することができますか?

example.iファイルは次のとおりです。

//File: example.i 
%module example 

%{ 
#define SWIG_FILE_WITH_INIT 
#include <boost/date_time/posix_time/ptime.hpp> 
#include "example.h" 
%} 

// for std:string 
%include "std_string.i" 

// for vector 
%include "std_vector.i" 

%include stl.i 
%include "example.h" 

example.hファイルは次のとおりです。

#pragma once 

#include <string> 
#include <boost/date_time/posix_time/ptime.hpp> 

using std::string; 
using boost::posix_time::ptime; 

class Example{ 
    public: 
    Example(string name, ptime timestamp){ 
     // doSomething... 
    } 
}; 

答えて

0

友人マイクと私が解決しました。

swig -c++ -python example.i 
g++ -O2 -fPIC -c example.h -std=c++11 
g++ -O2 -fPIC -c example_wrap.cxx -I/Library/anaconda2/include/python2.7 
g++ -bundle -flat_namespace -undefined suppress -o _example.so *.o 

SWIG実行コマンドである(14.04 Ubuntuの)

/* File: example.i */ 
%module example 

%{ 
#define SWIG_FILE_WITH_INIT 
#include "example.h" 
%} 

%include "example.h" 

SWIG実行コマンドである(OSX):

正しいインターフェイスファイル(ブーストヘッダを言及せず)は、次の通りであります:

swig -c++ -python example.i 
g++ -O2 -fPIC -c example.h -std=c++11 
g++ -O2 -fPIC -c example_wrap.cxx -I/usr/include/python2.7 
g++ -shared -o _example.so *.o 

最後の行のみを変更します。

関連する問題