garyr schrieb am 30.05.2015 um 18:22: > I'm trying to create an extension module using SWIG. I've > succeeded in generating a pyd file but when I import the module I get the > error message: "SystemError: dynamic module not initialized properly." I > added an initfoo() function but that didn't solve the problem. Below are the > various files, a slightly modified version of a SWIG exmaple. > I'm using Python 2.7 > > What am I missing? > > //foo.c: > #include "foo.h" > double Foo; > void initfoo() > { > Foo = 3.0; > }
This is wrong and you also won't need that. > int gcd(int x, int y) { > int g; > g = y; > while (x > 0) { > g = x; > x = y % x; > y = g; > } > return g; > } > [...] Just in case you're not bound to SWIG yet, here's a Cython [1] version of your code: # put this in a file called "foo.pyx" def gcd(int x, int y): while x > 0: y, x = x, y % x return y Compile it ("cythonize -b foo.pyx") and you'll get an extension module that executes faster than what SWIG would give you and keeps everything in one file to improve readability. Stefan [1] http://cython.org/ -- https://mail.python.org/mailman/listinfo/python-list