1
我產生一個Python綁定到C++項目,SWIG和C進行以下文件:SWIG Python綁定似乎空
test.h
int add(int a, int b);
TEST.CPP
int add(int a, int b)
{
return a+b;
}
test.i
%module test
%{
#include "test.h"
%}
的CMakeLists.txt
cmake_minimum_required(VERSION 2.6)
project(swig-test)
# This is a CMake example for Python
add_library(testcpp SHARED test.cpp)
FIND_PACKAGE(SWIG REQUIRED)
INCLUDE(${SWIG_USE_FILE})
FIND_PACKAGE(PythonLibs)
INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_PATH})
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
SET(CMAKE_SWIG_FLAGS "")
SET_SOURCE_FILES_PROPERTIES(test.i PROPERTIES CPLUSPLUS ON)
SET_SOURCE_FILES_PROPERTIES(test.i PROPERTIES SWIG_FLAGS "-includeall")
set(${CMAKE_CXX_FLAGS} "${CMAKE_CXX_FLAGS} -fPIC")
SWIG_ADD_MODULE(test python test.i)
SWIG_LINK_LIBRARIES(test testcpp)
它成功地編譯和libtestcpp.so
,_test.so
和test.py
創建。 strings libtestcpp.so
和strings _test.so
都有一個條目_Z3addii
和import test
在Python中工作,但在Python中的test
名稱空間中沒有任何內容。
我也試過手動
swig -c++ -python test.i
g++ -c -fpic test.cpp test_wrap.cxx -I/usr/include/python2.7 -I.
g++ -shared test.o test_wrap.o -o _test.so
具有相同的結果編制。
注意import test
不是完全可能是有用的空模塊; import test; dir(test)
產量
['__builtin__',
'__builtins__',
'__doc__',
'__file__',
'__name__',
'__package__',
'_newclass',
'_object',
'_swig_getattr',
'_swig_property',
'_swig_repr',
'_swig_setattr',
'_swig_setattr_nondynamic',
'_test']
和import test; help(test)
具有它是由SWIG創建的描述。
添加一行
%include "test.h"
我覺得你還是需要在'測試的末尾添加一行'%包括「test.h」'。 i'。 –這確實是對的 - 我似乎完全忽略了這一點! – danielunderwood
我在評論之前並不是100%確定的。我將我的評論轉換爲答案。 –