Funktion aus interner DLL



  • Hallo,
    habe Problem mit dem Ausführen einer Funktion (TMeasurement) aus einer DLL.
    Die Funktion liefert eine struct mit Messdaten zurück. 😋

    Die Funktion kann nicht aufgerufen werden (error C2440). 😡
    Wie rufe ich die Funktion über einen function pointer sauber auf ?
    Bisher: "Callback" bei anderen Funktionen

    Der Code:

    typedef struct  {
    	union {
                   float Frequency; // Signal described 
                    struct {         // Number of pulses in X & Y 
                        WORD PulseX;
                        WORD PulseY;
                    }Pulse;
                    float RDistance; //Rough distance 
           }Freq;
            float Distance; // Distance measured in millimeters 
            WORD Snr; // Signal quality (between 0..1024)
            short Sat; // For in-house test purposes only 
            WORD Total; // For in-house test purposes only 
    	BYTE BitSet; 
            BYTE Tag; // Tag of measurement 
    	} TMEASUREMENT;
    
    ...
    TMEASUREMENT TMeasurement; // function pointer
    
    HINSTANCE hModule; 
    hModule = LoadLibraryA ("Fifo.dll"); // extern DLL
    
    ...
    
    TMeasurement = (TMEASUREMENT) GetProcAddress(hModule, "TMeasurement");
    

    Danke !!!



  • "TMEASUREMENT" ist doch gar kein Funktionszeiger, sondern eine Struktur - und eine Struktur kann man nunmal nicht aufrufen.

    typedef struct
    {
      ...
    } TMEASUREMENT;
    
    typedef TMEASUREMENT (*PMEASUREFUNC)();
    
    ...
    PMEASUREFUNC TMeasurement; // function pointer
    
    HINSTANCE hModule; 
    hModule = LoadLibraryA ("Fifo.dll"); // extern DLL
    ...
    TMeasurement = (PMEASUREFUNC) GetProcAddress(hModule, "TMeasurement");
    

    (btw, der Bezeichner "TMeasurement" klingt nicht gerade nach einer Funktion)


Anmelden zum Antworten