Hallo Allerseits,
mir macht die Übergabe von Callback Funktionen zu schaffen. Und als Maschinenbauer, der im Studium nur mal JAVA programmiert hat ist das schwer genug ;-). Aber erstmal einige kurze Angaben zu meinem Projekt:
Ich schreibe zur Zeit ein VCL-Programm mit Turbo C++ zur Ansteuerung einer Olympus Digitalkamera. Zu diesem Zweck binde ich eine DLL des Herstellers (MochaDLL.dll) ein. So weit so gut. Um Rückmeldungen/Events von der Digicam zu erhalten bietet die DLL zwei Möglichkeiten: Callback-Funktionen oder Windows Messages. Ich habe mich für Ersteres entschieden.
So sieht der wohl wichtige Teil meines Codes aus:
Die MOCHA_CALLBACKS Struktur sieht wie folgt aus:
Der Compiler spuckt folgenden Fehler aus:
[C++ Fehler] Camera.cpp(28): E2235 Elementfunktion muß aufgerufen oder ihre Adresse übernommen werden
Was mache ich falsch?
Vielen Dank schon mal für Eure Hilfe!
mir macht die Übergabe von Callback Funktionen zu schaffen. Und als Maschinenbauer, der im Studium nur mal JAVA programmiert hat ist das schwer genug ;-). Aber erstmal einige kurze Angaben zu meinem Projekt:
Ich schreibe zur Zeit ein VCL-Programm mit Turbo C++ zur Ansteuerung einer Olympus Digitalkamera. Zu diesem Zweck binde ich eine DLL des Herstellers (MochaDLL.dll) ein. So weit so gut. Um Rückmeldungen/Events von der Digicam zu erhalten bietet die DLL zwei Möglichkeiten: Callback-Funktionen oder Windows Messages. Ich habe mich für Ersteres entschieden.
So sieht der wohl wichtige Teil meines Codes aus:
Code:
#include <vcl.h>
#include "MochaDLL.h"
#include "stdio.h"
#include "Camera.h"
#pragma link "MochaDLL.lib"
#pragma hdrstop
MOCHA_CALLBACKS mCallbacks; // Struktur aus MochaDLL.h
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
mCallbacks.pfnImageReady = ImageReady;
LONG lRet = InitMocha(&mCallbacks);
}
LONG32 CALLBACK ImageReady(ULONG32 lCam, ULONG32 ulObjHandle, void* pParam)
{
return 0;
}
Die MOCHA_CALLBACKS Struktur sieht wie folgt aus:
Code:
typedef struct __MOCHA_CALLBACKS {
MOCHAADDDEVFUNC pfnAddDevice;
void* pAddDeviceParam;
MOCHAREMOVEDEVFUNC pfnRemoveDevice;
void* pRemoveDeviceParam;
MOCHAIMAGEREADYFUNC pfnImageReady;
void* pImageReadyParam;
MOCHAPROPCHANGEDFUNC pfnPropChanged;
void* pPropChangedParam;
MOCHAUPDATECAPABILITIESFUNC pfnUpdateCapabilities;
void* pUpdateCapabilitiesParam;
} MOCHA_CALLBACKS, *PMOCHA_CALLBACKS;
Der Compiler spuckt folgenden Fehler aus:
[C++ Fehler] Camera.cpp(28): E2235 Elementfunktion muß aufgerufen oder ihre Adresse übernommen werden
Was mache ich falsch?
Vielen Dank schon mal für Eure Hilfe!
Zuletzt bearbeitet: