使用从SWIG生成的python文件时出错(从C ++生成)

问题描述 投票:-1回答:1

我有一个.cpp(称为trial.cpp)文件,如下所示:

   #include "trial.hpp"
   int main()
   {
        cout << "hello";
       return 0;
   }

我的头文件(trial.hpp)是:

#include <iostream>
using namespace std;

我有一个.i文件(trial.i),如下:

%module trial
%{
#include "trial.hpp"
%}

%include trial.hpp

我已在cmd中以以下方式使用SWIG来生成.pyd,.py,.o和.cxx文件:

swig -c ++ -python trial.i

g ++ -c trial_wrap.cxx -I C:\ Users ..... Python \ Python37 \ include

g ++ -shared trial_wrap.o -o _trial.pyd -LC:\ Users ..... \ Python \ Python37 \ libs -lpython37

文件已成功生成

但是,当我打开Python命令提示符并运行此命令时:

从试用导入*

main()

我说错了

回溯(最近通话):

文件“ ”,中的第1行,>

NameError:未定义名称'main'

我该如何解决此问题?

此外,如果我使用另一个函数名(例如fn1())而不是main(),则在第三条命令中会出现以下错误:

g ++ -shared trial_wrap.o -o _trial.pyd -L

C:\ Users ..... \ Python \ Python37 \ libs -l python37

错误是:

对fn1()的未定义引用)

我想使用fn1()代替main()

我该如何解决这个问题?

我有一个.cpp(称为trial.cpp)文件,如下所示:#include“ trial.hpp” int main(){cout <

python c++ python-3.x swig
1个回答
0
投票

已解决!

改为使用这三个语句:

swig -c ++ -python trial.i

© www.soinside.com 2019 - 2024. All rights reserved.