dll Datei als Klasse definieren



  • Guten Tag Zusammen!

    Ich bin noch relativ neu in der Welt des Programmierens und stoße gerade auf ein paar Probleme. Ich habe eine Klasse erstellt die auf eine dll Datei zugreift und die Funktionen aufruft. Nehmen wir nur ein Funktion als beispiel:
    In der Header Datei steht:

    #pragma once
    class refprop
    {
    public:
    
    typedef void (__stdcall *fp_ABFL1dllTYPE)(double *,double *,double *,long *,double *,double *,double *,double *,double *,double *,long *,char*,long )
    
    //Define explicit function pointers
    fp_ABFL1dllTYPE ABFL1dll;
    }
    

    Damit habe ich jetzt die Funktion fp_ABFL1dllTYPE und einen Zeiger ABFL1dll erstellt, wenn ich das richtig verstanden habe.

    In der dazugehörigen cpp Datei steht dann folgendes:

    #include <windows.h>
    #include <stdio.h>
    #include "refprop.h"
    #include <iostream>
    using namespace std;
    
    // Ein paar Konstanten
    
    int test(int argc, char* argv[])
    {
    //Definition von Variablen
    
    HINSTANCE RefpropdllInstance;
    
    RefpropdllInstance = LoadLibraray("./refprop.dll");
    
    refprop::ABFl1dll = (refprop::fp_ABFL1dllTYPE) GetProcAdress(RefpropdllInstance, "ABFL1dll").
    

    Hier ist auch schon die Fehlermeldung:

    Error:Ein nicht statischer Memberverweis muss relativ zu einem bestimmten Objekt sein.

    Ich weiß das Klasse != Objekt ist. Aber wenn ich vorher ein Objekt bzw. eine Instanz der Klasse definiere:

    refprop p;
    

    und dann

    p.ABFL1dll
    

    schreibe, dann gibt es als Fehlermeldung das vor der Funktion ein Klassenname stehen muss

    Ich hoffe man konnte mein Problem einigermaßen nachvollziehen



  • Nein. Lies dir das nochmal selbst durch. Nutze deine empathischen Fähigkeiten, um festzustellen, ob ein Aufgabenfremder das verstehen kann.

    Danach guckst du dir das Aussehen von deinem Post an und überarbeitest es. (Tipp: beim Antworten sind unterm Antwortfenster einige Buttons, unter anderem der C++ Button mit welchem du deinen Code einfasst, dann wird der schön im Forum dargestellt.)



  • Danke dir, habe ich vorher wohl nicht gesehen. Ich hoffe das es dadurch ein bisschen übersichtlicher wurde



  • Zeig ein Minimalbeispiel, das das Problem reproduziert.



  • Trizzk schrieb:

    Danke dir, habe ich vorher wohl nicht gesehen. Ich hoffe das es dadurch ein bisschen übersichtlicher wurde

    Sehr gut 😉 :>



  • Dein ABFL1dll ist Member einer refprop Instanz, nicht der Klasse selbst. Du musst ABFL1dll schon statisch deklarieren, damit dein Vorhaben gelingt.



  • Trizzk, dein Code ist kompletter Nonsense.
    Was genau willst du mit der DLL erreichen? Gerade als Anfänger sollte man erst die Grundlagen der Sprache beherrschen, anstatt sich mit solchen "advanced features" zu beschäftigen.


Log in to reply