Hallo zusammen,
ich habe ein Problem mit dem Einbinden einer c
DLL in Delphi. Und zwar habe ich eine
DLL von einem Hardwarehersteller vorgegeben, die ich nun einbinden möchte und bekomme immer den Fehler, dass die Funktion/Prozedureinsprungspunkt nicht gefunden wurde.
Der Funktionsaufruf ist in der Doku so definiert:
COM_RbsManipulationReq (COM_Handle
handle, COM_RbsManipulation manipulation)
Die Typedef von COM_RbsManipulation ist in c wie folgt:
Code:
typedef struct COM_RbsManipulationtag
{
u08 TriggerType_1;
u08 TriggerMode_1;
u32 TriggerSource_1;
u32 TriggerValue_1;
u32 TriggerHysterese_1;
u08 TriggerType_2;
u08 TriggerMode_2;
u32 TriggerSource_2;
u32 TriggerValue_2;
u32 TriggerHysterese_2;
u08 TriggerType_3;
u08 TriggerMode_3;
u32 TriggerSource_3;
u32 TriggerValue_3;
u32 TriggerHysterese_3;
u08 TriggerType_4;
u08 TriggerMode_4;
u32 TriggerSource_4;
u32 TriggerValue_4;
u32 TriggerHysterese_4;
u16 DelayValue;
u08 DelayType;
u08 BusId;
u08 SequenceNumber;
u08 ManipulationType;
u16 ManipulationDuration;
u08 ManipulationDurationType;
u08 ManipulationMode;
u32 ManipulationTarget;
u16 ManipulationTargetValue;
u32 ManipulationValue1;
u32 ManipulationValue2;
u32 ManipulationValue3;
u32 MinValue;
u32 MaxValue;
u08 MinMaxMode;
u08 BaseDataType;
}COM_RbsManipulation;
u08, u16 und u32 sind so definiert:
Code:
typedef unsigned char u08
typedef unsigned short u16
typedef unsigned long u32
Ich habe die Typedef nun auf Delphi umgemünzt, jedoch scheint er das so nicht zu fressen:
Delphi-Quellcode:
type
Manipulationtag = record
TriggerType_1: byte;
TriggerMode_1: byte;
TriggerSource_1: cardinal;
TriggerValue_1: cardinal;
TriggerHysterese_1: cardinal;
TriggerType_2: byte;
TriggerMode_2: byte;
TriggerSource_2: cardinal;
TriggerValue_2: cardinal;
TriggerHysterese_2: cardinal;
TriggerType_3: byte;
TriggerMode_3: byte;
TriggerSource_3: cardinal;
TriggerValue_3: cardinal;
TriggerHysterese_3: cardinal;
TriggerType_4: byte;
TriggerMode_4: byte;
TriggerSource_4: cardinal;
TriggerValue_4: cardinal;
TriggerHysterese_4: cardinal;
DelayValue: word;
DelayType: byte;
BusId: byte;
SequenceNumber: byte;
ManipulationType: byte;
ManipulationDuration: word;
ManipulationDurationType: byte;
ManipulationMode: byte;
ManipulationTarget: cardinal;
ManipulationTargetValue: word;
ManipulationValue1: cardinal;
ManipulationValue2: cardinal;
ManipulationValue3: cardinal;
MinValue: cardinal;
MaxValue: cardinal;
MinMaxMode: byte;
BaseDataType: byte;
end;
Ich verzweifele gerade daran und bekomme immer wieder meinen Fehler "Prozedureinsprungspunkt nicht gefunden. Ein
DLL Export viewer zeigt mir den Funktionsnamen in der
DLL so an: _COM_RbsManipulationReq@112
Ich bin für alle Tipps dankbar!