return STRUKTUR ???



  • meinst du mit *alles* auch das Programm welches die die Dll benutzt??
    Soll ich da etwa das ganze Programm oder nur
    __declspec (dllexport) struct design SetDesign(int);
    einrahmen 😕 😮



  • Damit meine ich die Funktion(s-Deklaration + Definition), und die Strukur (Definition und Deklaration); sowohl in Dll als auch im Programm. Den Aufruf natürlich nicht. Die DllMain natürlich auch nicht.



  • Also vereinfacht so: ?
    dll:

    int WINAPI DllMain( HINSTANCE hInstance, 
                           DWORD  fdwReason, 
                           PVOID pvReserved 
                         ) 
    { 
        return TRUE; 
    } 
    
    extern "C"
    {
    
    struct design 
    { 
        int x;
    	int y;
    }; 
    
    __declspec(dllexport) struct design SetDesign(int x) 
    { 
    	design d;
    
        if( x == 0 ) 
        { 
            d.x = 1 ; 
            d.y = 2 ; 
        } 
    	else
    	{
    		d.x=0;
    		d.y=0;
    	}
    
        return d; 
    
    } 
    
    }
    

    Programm:

    #pragma comment(lib,"dlltest.dll")
    extern "C"
    {
    	struct design 
    	{ 
    		int x;
    		int y;
    	};
    
    	 __declspec (dllexport) struct design SetDesign(int x);
    
    }
    

    Denn da bekomme ich wieder nen Fehler ich hätte ein ungültiges Bibliotheksformat



  • Sorry, vergessen #pragma comment(lib,"dlltest.dll") in #pragma comment(lib,"dlltest.lib") zu ändern



  • Vielen Dank für die investierte Gedult und Ausdauer jetzt funktioniert alles wie gewünscht 😃 😃 😃 🙂



  • Naja mit #pragma DLL's zu linken, ist auch etwas difus 😃 .



  • warum??



  • und weis du (oder jemand anders), wie ich folgenden Fehler behebe?

    __declspec(dllexport) struct vok Traduct() 
    { 
        vok VOK; 
    
    	return VOK; 
    
    }
    

    der meldet mir ein Warning für return VOK und zwar "Die nicht initialisierte lokale Variable "VOK" wurde verwendet." aber ich hab doch vorher vok VOK geschrieben. Das ist insofern von bedeutung ,das mir dies im Hauptprogramm zum Problem wird.

    PS. vok ist schonwieder ne andere Struktur. Ich hab die dll im Debugmodus, alles funktionierte wie es soll und aufeinmal kam diese meldung dazwischen



  • noha schrieb:

    warum??

    Weil man damit Libraries linkt ⚠ .

    noha schrieb:

    und weis du (oder jemand anders), wie ich folgenden Fehler behebe?

    __declspec(dllexport) struct vok Traduct() 
    { 
        vok VOK; 
    
    	return VOK; 
        
    }
    

    der meldet mir ein Warning für return VOK und zwar "Die nicht initialisierte lokale Variable "VOK" wurde verwendet." aber ich hab doch vorher vok VOK geschrieben. Das ist insofern von bedeutung ,das mir dies im Hauptprogramm zum Problem wird.

    PS. vok ist schonwieder ne andere Struktur. Ich hab die dll im Debugmodus, alles funktionierte wie es soll und aufeinmal kam diese meldung dazwischen

    Du definierst nur eine Variable der Struktur, initialisierst diese aber nicht...einfaches Beispiel:

    int i; // Definition
    i = 6; // Initialisierung
    


  • Ahso ich wusste garnicht das das so schlimm ist das mir gleich ne riesige Fehlermeldung in den Bildschirm springt (Wohlbemerkt im Debugmodus). Aber jetzt weis ichs wie noch viele andere Sachen im Bezug auf dlls und Strukturen 😃
    Dankeschön



  • Du kannst diese Meldungen auch abstellen. Diese müssen nicht zwangsläufig zu Fehlersituationen führen (at-run-time), könnens aber!


Anmelden zum Antworten