swig python und c

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
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]
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

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
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
Antworten