SWIG:您能否使用 SWIG 仅使用 C++ 头文件使 C++ 在 Python 中可用?
SWIG: Can you make C++ usable in Python using exclusively the C++ header file using SWIG?
我正在尝试学习如何使用 SWIG,并且想知道我是否正在执行一些不需要执行的额外步骤。我目前有文件 Dog.cpp、Dog.h 和 Dog.i.I 正在尝试包装 Dog.cpp 以便使用 SWIG 在 Python 中使用。我的接口文件 Dog.i 如下所示:
%module Dog
%{
#include "Dog.h"
%}
%include "Dog.h"
我目前通过在命令行上执行以下步骤来创建 python 包装器:
swig -c++ -python Dog.i
g++ -fpic -c Dog.cpp
g++ -fpic -c Dog_wrap.cxx -I /usr/include/python2.7
g++ -shared Dog.o Dog_wrap.o -o _Dog.so
我的问题是,有没有办法在根本不引用 Dog.cpp 的情况下创建 python 包装器?例如,如果我不知道 Dog.cpp 的位置,有没有办法让事情正常进行?谢谢!
My question is, is there a way to create the python wrapper without referencing Dog.cpp at all?
只有创建两个 DLLs/shared 库才能做到这一点。一个 DLL/shared 库可以有对应于 Dog.cpp 的目标代码,而第二个 DLL/shared 库可以有 Python 包装代码。
如果您想创建一个 DLL/shared 库或可执行文件,那么您必须 link 来自 Dog.cpp 的目标代码和来自 Python 的目标代码包装器。
Python 包装器代码以这种方式命名是有原因的。它只是 Dog.cpp.
中代码的包装器
我正在尝试学习如何使用 SWIG,并且想知道我是否正在执行一些不需要执行的额外步骤。我目前有文件 Dog.cpp、Dog.h 和 Dog.i.I 正在尝试包装 Dog.cpp 以便使用 SWIG 在 Python 中使用。我的接口文件 Dog.i 如下所示:
%module Dog
%{
#include "Dog.h"
%}
%include "Dog.h"
我目前通过在命令行上执行以下步骤来创建 python 包装器:
swig -c++ -python Dog.i
g++ -fpic -c Dog.cpp
g++ -fpic -c Dog_wrap.cxx -I /usr/include/python2.7
g++ -shared Dog.o Dog_wrap.o -o _Dog.so
我的问题是,有没有办法在根本不引用 Dog.cpp 的情况下创建 python 包装器?例如,如果我不知道 Dog.cpp 的位置,有没有办法让事情正常进行?谢谢!
My question is, is there a way to create the python wrapper without referencing Dog.cpp at all?
只有创建两个 DLLs/shared 库才能做到这一点。一个 DLL/shared 库可以有对应于 Dog.cpp 的目标代码,而第二个 DLL/shared 库可以有 Python 包装代码。
如果您想创建一个 DLL/shared 库或可执行文件,那么您必须 link 来自 Dog.cpp 的目标代码和来自 Python 的目标代码包装器。
Python 包装器代码以这种方式命名是有原因的。它只是 Dog.cpp.
中代码的包装器