Einzelnen Beitrag anzeigen

Edelfix

Registriert seit: 6. Feb 2015
Ort: Stadtoldendorf
214 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Interface aus dll laden

  Alt 3. Feb 2016, 15:15
Danke für die schnelle Antwort.

Wenn ich so direkt an die Funktionen komme dann ist aktuell mein Problem die Deklaration der TDLLFunktion.

Ich habe zu der DLL eine *.h und eine *.c Datei. Ich vermute das ist der Quellcode der DLL.

Hier ein Aiszug:

Code:
/* interface IDavidClientAddin */
/* [object][nonextensible][uuid] */ 


DEFINE_GUID(IID_IDavidClientAddin,0xC7255970,0xEB0B,0x42ef,0x86,0xD0,0xC3,0x1F,0x6D,0x34,0x4D,0x03);

#if defined(__cplusplus) && !defined(CINTERFACE)
   
    MIDL_INTERFACE("C7255970-EB0B-42ef-86D0-C31F6D344D03")
    IDavidClientAddin : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE Startup( 
            /* [in] */ IDispatch *pInfoCenter) = 0;
       
        virtual HRESULT STDMETHODCALLTYPE Initialize( 
            /* [in] */ IDispatch *pInfoCenter,
            /* [in] */ VARIANT vKey) = 0;
       
        virtual HRESULT STDMETHODCALLTYPE Shutdown( void) = 0;
       
    };
   
#else    /* C style interface */

    typedef struct IDavidClientAddinVtbl
    {
        BEGIN_INTERFACE
       
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IDavidClientAddin * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out void **ppvObject);
       
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IDavidClientAddin * This);
       
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IDavidClientAddin * This);
       
        HRESULT ( STDMETHODCALLTYPE *Startup )( 
            IDavidClientAddin * This,
            /* [in] */ IDispatch *pInfoCenter);
       
        HRESULT ( STDMETHODCALLTYPE *Initialize )( 
            IDavidClientAddin * This,
            /* [in] */ IDispatch *pInfoCenter,
            /* [in] */ VARIANT vKey);
       
        HRESULT ( STDMETHODCALLTYPE *Shutdown )( 
            IDavidClientAddin * This);
       
        END_INTERFACE
    } IDavidClientAddinVtbl;

    interface IDavidClientAddin
    {
        CONST_VTBL struct IDavidClientAddinVtbl *lpVtbl;
    };
In meine Delphi client müsste das dann so aussehen:
Delphi-Quellcode:
  IDavidClientAddin = interface
    ['{C7255970-EB0B-42ef-86D0-C31F6D344D03}']
    procedure Startup(pInfoCenter: IDispatch); stdcall;
    procedure Initialize(pInfoCenter: IDispatch; vKey: Variant); stdcall;
    procedure Shutdown(void: HMODULE); stdcall;
  end;
Weiter komme ich nicht.
  Mit Zitat antworten Zitat