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