DLL in Python nutzen
Verfasst: Dienstag 20. November 2007, 08:40
Hallo,
ich weiss dieses Thema wurde bestimmt bereits mehrfach hier im Thema behandelt und ich habe auch genug darüber gelesen, doch ich finden einfach meinen Fehler nicht.
Ich habe mittels VC++6.0 eine sehr einfache DLL erstellt. Hier mein cpp File:
und hier die zugehörige Header Datei:
Jetzt wollte ich das ganze in Python nutzen. Der Code dazu sieht folgendermaßen aus:
Wenn ich das ganze ausführe erhalte ich folgende Fehlermeldung:
Traceback (most recent call last):
File "C:\tmp\abc_py\test.py", line 26, in <module>
ret = dll.fnAbc2_dll(10)
ValueError: Procedure probably called with too many arguments (4 bytes in excess)
Woran könnte das liegen? In der Dokumentation findet man zu diesem Thema nur den tollen Hinweis, mann solle sich den C-Header ansehen. Doch der Aufruf sollte bei mir stimmen. Wo könnte also der Fehler liegen.
Danke im Vorraus.
ich weiss dieses Thema wurde bestimmt bereits mehrfach hier im Thema behandelt und ich habe auch genug darüber gelesen, doch ich finden einfach meinen Fehler nicht.
Ich habe mittels VC++6.0 eine sehr einfache DLL erstellt. Hier mein cpp File:
Code: Alles auswählen
#include "stdafx.h"
#include "abc_dll.h"
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
DllExport int fnAbc2_dll(int abcd)
{
return ++abcd;
}
Code: Alles auswählen
#define DllImport __declspec( dllimport )
#define DllExport __declspec( dllexport )
extern "C" DllExport int fnAbc2_dll(int abcd);
Code: Alles auswählen
import ctypes
dll = ctypes.windll.LoadLibrary("abc_dll.dll")
ret = dll.fnAbc2_dll(10)
print ret
Traceback (most recent call last):
File "C:\tmp\abc_py\test.py", line 26, in <module>
ret = dll.fnAbc2_dll(10)
ValueError: Procedure probably called with too many arguments (4 bytes in excess)
Woran könnte das liegen? In der Dokumentation findet man zu diesem Thema nur den tollen Hinweis, mann solle sich den C-Header ansehen. Doch der Aufruf sollte bei mir stimmen. Wo könnte also der Fehler liegen.
Danke im Vorraus.