Seite 1 von 1

swig python und c

Verfasst: Sonntag 2. Oktober 2005, 15:27
von Gast
Hallo zusammen,
versuche ein paar c-funktionen mit hilfe von swig über python zu benutzen. dazu nutze ich visual studio.net2003.
es wird eine dll_project_wrap.c angelegt, die ich in mein project einbinde und auch eine _dll_project.dll wird generiert. aber immer wenn ich versuche die ebenfalls erzeugte datei dll_project.py über import per commandozeile aufzurufen, kommt:

Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "dll_project.py", line 5, in ?
import _dll_project
ImportError: dynamic module does not define init function (init_dll_project)

wo muss diese init-funktion definiert werden? im c-code oder in der interface-datei (in beiden). ich find nirgends einen hinweis darauf. hab schon versucht einfach eine funktion umzubenennen, aber ohne erfolg. hoffe es kennt einer die lösung!!!!

danke und gruß
alex

Hier der c code

Code: Alles auswählen

/* File : dll_project.c */

double  My_variable  = 3.0;

/* Compute factorial of n */
int  fact(int n) {
	if (n <= 1) return 1;
	else return n*fact(n-1);
}

/* Compute n mod m */
int my_mod(int n, int m) {
	return(n % m);
}
hier das interfacefile

Code: Alles auswählen

/* File : dll_project.i */
%module dll_project
%{
/* Put headers and other declarations here */
%}

extern double My_variable;
extern int    fact(int);
extern int    my_mod(int n, int m);
[/quote]

Verfasst: Montag 3. Oktober 2005, 20:19
von Joghurt
Sieht soweit ganz ok aus (init_dll_project wird von Swig definiert).
Funktioniert es nach dieser Methode?
http://www.signal6.com/cgi-bin/wiki.pl? ... ForWindows

Verfasst: Sonntag 9. Oktober 2005, 09:36
von Gast
Hallo zusammen,

ich hab das Problem lösen können. Es lag an den Einstellungen in vs.net. einige Pfade waren nicht korrekt eingerichtet und das debuggen funktioniert nicht, weil die python24_d.lib komplett fehlt. dazu gibt es aber Lösungen in Internet.

Gruß und danke für euer Hilfe
Alex