Einzelnen Beitrag anzeigen

Pow3rus3r

Registriert seit: 17. Apr 2012
43 Beiträge
 
Delphi XE Professional
 
#1

c DLL in Delphi einbinden (Prozedureinsprungspunkt nicht gefunden)

  Alt 24. Mai 2012, 08:03
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!
  Mit Zitat antworten Zitat