Probleme beim einbinden einer Labview dll
Verfasst: Mittwoch 12. Dezember 2007, 16:16
Hallo Zusammen,
ich habe ein Problem mit dem einbinden einer DLL in Python. Die DLL selbst habe ich in Labview erstellt. Dabei werden jede Menge Strings (10000+) verarbeited und sollen ausgewerted an Python zurrückgegeben werden.
Dabei stürzt mir Python immer wieder ab. Vor allem wenn größere Mengen an strings verarbeited werden - kann aber auch schon vorher passieren.
Die Headerdatei sieht folgendermaßen aus:
Die Python Datei:
Was ich nicht so richtig kapiere ist warum ich in bei der Labview dll eine size übergeben muß. Ist die wichtig?
Wär echt super wenn ihr mir einen Rat geben könntet
Gruß
Benny
ich habe ein Problem mit dem einbinden einer DLL in Python. Die DLL selbst habe ich in Labview erstellt. Dabei werden jede Menge Strings (10000+) verarbeited und sollen ausgewerted an Python zurrückgegeben werden.
Dabei stürzt mir Python immer wieder ab. Vor allem wenn größere Mengen an strings verarbeited werden - kann aber auch schon vorher passieren.
Die Headerdatei sieht folgendermaßen aus:
Code: Alles auswählen
void __stdcall Jobauswahl(char SG[], char job[], char para[], char result[]);
void __stdcall Init(char APIPfad[], char Debug[]);
void __stdcall Jobabfrage(char String[], long *LNge);
void __stdcall Auswertung(char Msgs[], char Ergebnisstring[], long *LNge);
Code: Alles auswählen
class MY_Interface():
GLOBALS = {}
# dll Initialisierung
def __init__(self):
print 'Init dll ...'
self.GLOBALS['rootpath'] = os.path.dirname(__file__) + "\\"
print os.path.dirname(__file__)
self.GLOBALS['dllpath'] = self.GLOBALS['rootpath'] + "dll\\SharedLib.dll"
# DLL laden
try:
self.GLOBALS['dll'] = windll.LoadLibrary(self.GLOBALS['dllpath'])
except WindowsError:
print 'Fehler beim laden der dll!'
self.GLOBALS['dll'] = None
# dll Schließung
def __del__(self):
print 'Schliesse dll ...'
# api32.dll Initialisierung
# Debug_mode - Wenn 'true' dann erscheint .txt Eingabeaufforderung
def api_init(self, API_path, Debug_mode='false'):
if bool(self.GLOBALS['dll']):
self.GLOBALS['dll'].Init(API_path, Debug_mode)
# Jobausführen
# Achtung! Kein Rückgabewert
def api_Jobauswahl(self, SG, job, para, result):
if bool(self.GLOBALS['dll']):
self.GLOBALS['dll'].Jobauswahl(SG, job, para, result)
# Rückgabewert von api_Jobauswahl
def api_Jobabfrage(self):
if bool(self.GLOBALS['dll']):
temp = c_char_p('')
size = c_long(100000)
self.GLOBALS['dll'].Jobabfrage(temp, byref(size))
return temp.value
def api_Auswertung(self, key):
if bool(self.GLOBALS['dll']):
#temp = c_char_p('')
size = c_long(100000)
self.GLOBALS['dll'].Auswertung(key, temp, byref(size))
return temp.value
Wär echt super wenn ihr mir einen Rat geben könntet

Gruß
Benny