【问题标题】:SWIG: Can you make C++ usable in Python using exclusively the C++ header file using SWIG?SWIG:你能否使用 SWIG 专门使用 C++ 头文件使 C++ 在 Python 中可用?
【发布时间】:2016-06-30 19:53:58
【问题描述】:

我正在尝试学习如何使用 SWIG,并且想知道我是否正在执行一些我不需要执行的额外步骤。我目前有文件 Dog.cpp、Dog.h 和 Dog.i。我正在尝试使用 SWIG 包装 Dog.cpp 以在 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 的位置,有没有办法让我仍然可以正常工作?谢谢!

【问题讨论】:

    标签: python c++ shell g++ swig


    【解决方案1】:

    我的问题是,有没有办法在不引用 Dog.cpp 的情况下创建 python 包装器?

    只有在创建两个 DLL/共享库时才能这样做。一个 DLL/共享库可以具有对应于 Dog.cpp 的目标代码,而第二个 DLL/共享库可以具有 Python 包装代码。

    如果要创建一个 DLL/共享库或可执行文件,则必须将 Dog.cpp 中的目标代码与 Python 包装器中的目标代码链接起来。

    Python 包装器代码以这种方式命名是有原因的。它只是 Dog.cpp 中代码的包装器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多