Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
can';t运行python的swig教程_C_Python 3.x_Gcc_Swig - Fatal编程技术网

can';t运行python的swig教程

can';t运行python的swig教程,c,python-3.x,gcc,swig,C,Python 3.x,Gcc,Swig,我尝试过运行swigpython教程,但没有效果,我检查了许多类似的问题,但没有一个解决我的问题,我正在使用 windows*,64位 SWIG版本4.0.2 使用i686-w64-mingw32-g++[i686-w64-mingw32]编译 配置选项:+pcre 该示例特别涉及用C编写的gcd函数 /* File : example.c */ /* A global variable */ double Foo = 3.0; /* Compute the greatest common

我尝试过运行swigpython教程,但没有效果,我检查了许多类似的问题,但没有一个解决我的问题,我正在使用

windows*,64位

SWIG版本4.0.2

使用i686-w64-mingw32-g++[i686-w64-mingw32]编译

配置选项:+pcre

该示例特别涉及用C编写的gcd函数

/* File : example.c */

/* A global variable */
double Foo = 3.0;

/* Compute the greatest common divisor of positive integers */
int gcd(int x, int y) {
  int g;
  g = y;
  while (x > 0) {
    g = x;
    x = y % x;
    y = g;
  }
  return g;
}
我运行了swig-python示例

但是每当我运行
gcc-c-fpic example.c-IC:\Users\Moses\anaconda3\include

example_wrap.c: In function '_wrap_gcd':
example_wrap.c:2886:17: warning: implicit declaration of function 'gcd'; did you mean 'gcvt'? [-Wimplicit-function-decla
ration]
   result = (int)gcd(arg1,arg2);
                 ^~~
                 gcvt
example_wrap.c: In function 'Swig_var_Foo_set':
example_wrap.c:2901:5: error: 'Foo' undeclared (first use in this function)
     Foo = (double)(val);
     ^~~
example_wrap.c:2901:5: note: each undeclared identifier is reported only once for each function it appears in
example_wrap.c: In function 'Swig_var_Foo_get':
example_wrap.c:2912:37: error: 'Foo' undeclared (first use in this function)
   pyobj = SWIG_From_double((double)(Foo));
我只得到了example.o文件,而example_wrap.o文件丢失了,几乎肯定是因为这个错误,我尝试用
ld-shared-example.o/c/users/moses/Anaconda3/python37.dll/c/Windows/System32/msvcr120.dll-o\u example.pyd
但在尝试导入example.py文件时,出现以下错误:

Traceback (most recent call last):

  File "C:\Users\moses\cGraphy.py", line 1, in <module>
    import example

  File "C:/Users/moses/example.py", line 15, in <module>
    import _example

ImportError: dynamic module does not define module export function (PyInit__example)
回溯(最近一次呼叫最后一次):
文件“C:\Users\moses\cGraphy.py”,第1行,在
导入示例
文件“C:/Users/moses/example.py”,第15行,在
导入(示例)
ImportError:动态模块未定义模块导出函数(PyInit__示例)

非常感谢您的帮助。

您的示例.i文件需要将导出添加到包装器中,并通过SWIG进行处理:

%模块示例
//此部分直接复制到生成的包装器中,因此函数
//可以在example_wrap.c与example.c链接时找到
%{
外部内部gcd(内部x,内部y);
外间双福;
%}
//这告诉SWIG为这些导出编写包装器。
外部内部gcd(内部x,内部y);
外间双福;
如果不想将定义加倍,还可以使用:

%模块示例
//内联插入到包装器*中,然后*SWIG将其包装。
%内联%{
外部内部gcd(内部x,内部y);
外间双福;
%}
示例与此示例相同。i:

>>导入示例
>>>example.cvar.Foo
3
>>>示例:gcd(35,14)
7.
我使用MSVC而不是gcc,使用以下命令:

swig-python示例.i
cl/LD/W3/Fe\u example.pyd/Ic:\python39\include example\u wrap.c example.c-link/libpath:c:\python39\libs

您的示例.i文件需要将导出添加到包装器中,并通过SWIG进行处理:

%模块示例
//此部分直接复制到生成的包装器中,因此函数
//可以在example_wrap.c与example.c链接时找到
%{
外部内部gcd(内部x,内部y);
外间双福;
%}
//这告诉SWIG为这些导出编写包装器。
外部内部gcd(内部x,内部y);
外间双福;
如果不想将定义加倍,还可以使用:

%模块示例
//内联插入到包装器*中,然后*SWIG将其包装。
%内联%{
外部内部gcd(内部x,内部y);
外间双福;
%}
示例与此示例相同。i:

>>导入示例
>>>example.cvar.Foo
3
>>>示例:gcd(35,14)
7.
我使用MSVC而不是gcc,使用以下命令:

swig-python示例.i
cl/LD/W3/Fe\u example.pyd/Ic:\python39\include example\u wrap.c example.c-link/libpath:c:\python39\libs
Traceback (most recent call last):

  File "C:\Users\moses\cGraphy.py", line 1, in <module>
    import example

  File "C:/Users/moses/example.py", line 15, in <module>
    import _example

ImportError: dynamic module does not define module export function (PyInit__example)