Problem mit Funktion in DLL



  • Moin

    So mit den Dll's bin ich jetzt schn wieter.

    Ich habe noch ein kleiner Problem und zwar kann ich die Funktion aus meiner MFC Dll nicht aufrufen. Wo dran kann das liegen?

    Ich habe bereits die Header eingebunden und Lib + DLL kopiert.

    Hier mal ein bissel code

    #if !defined(AFX_TEDA_H__E1C5620D_A46D_4C91_808F_50B57E79F51F__INCLUDED_)
    #define AFX_TEDA_H__E1C5620D_A46D_4C91_808F_50B57E79F51F__INCLUDED_
    
    #if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000
    
    #ifndef __AFXWIN_H__
    	#error include 'stdafx.h' before including this file for PCH
    #endif
    
    #include "resource.h"		// Hauptsymbole
    
    /////////////////////////////////////////////////////////////////////////////
    // CTeDaApp
    // Siehe TeDa.cpp für die Implementierung dieser Klasse
    //
    
    class CTeDaApp : public CWinApp
    {
    public:
    	int Add();
    	CTeDaApp();
    
    // Überladungen
    	// Vom Klassenassistenten generierte Überladungen virtueller Funktionen
    	//{{AFX_VIRTUAL(CTeDaApp)
    	//}}AFX_VIRTUAL
    
    	//{{AFX_MSG(CTeDaApp)
    		// HINWEIS - An dieser Stelle werden Member-Funktionen vom Klassen-Assistenten eingefügt und entfernt.
    		//    Innerhalb dieser generierten Quelltextabschnitte NICHTS VERÄNDERN!
    	//}}AFX_MSG
    	DECLARE_MESSAGE_MAP()
    };
    
    /////////////////////////////////////////////////////////////////////////////
    
    //{{AFX_INSERT_LOCATION}}
    // Microsoft Visual C++ fügt unmittelbar vor der vorhergehenden Zeile zusätzliche Deklarationen ein.
    
    #endif // !defined(AFX_TEDA_H__E1C5620D_A46D_4C91_808F_50B57E79F51F__INCLUDED_)
    

    und hier die Source

    int CTeDaApp::Add()
    {
    	CString Name = "Jens";
    	return 1;
    }
    

    muss ich da irgednwie noch dieses komisch mit export mit rein packen?

    Bin für jede Hilfe dankbar. 🙂



  • Wie man eine Klasse exportiert hatte ich dir drüben doch schon geschrieben. Oder darf es nur die Funktion sein? Das weiß ich aus dem Kopf gerade nicht. 😞



  • Kannst du es mir an meinem Quellcode demonstrieren?

    Kapiere irgednwie deine Abgehackten Sätze net 🙂



  • Bin eben manchmal schreibfaul. 😉

    class DLL_EXPORT_MAKRO CTeDaApp : public CWinApp
    

    Wie DLL_EXPORT_MAKRO bei dir heißt, hab ich eben nicht gefunden.

    Vergiß den include der Datei mit dem Makro nicht.



  • estartu schrieb:

    Bin eben manchmal schreibfaul. 😉

    class DLL_EXPORT_MAKRO CTeDaApp : public CWinApp
    

    Wie DLL_EXPORT_MAKRO bei dir heißt, hab ich eben nicht gefunden.

    Vergiß den include der Datei mit dem Makro nicht.

    hä? was isn dieses DLL Export Makro? So was habe ich nie erstellt 🙂



  • Du hast dir meine Anleitung also nicht komplett angeschaut, schade.
    Ganz unten steht es nämlich:

    Jetzt noch die Exportsymbole einrichten.
    Eine neue .h Datei erstellen.

    Das hier etwas anpassen:

    #ifdef _VIEWDLL_
                #define DLL_EXPORT_ORTE _declspec(dllexport)
    #else
                #define DLL_EXPORT_ORTE _declspec(dllimport)
    #endif
    

    _VIEW_DLL_ muss in den Projekteigenschaften eingetragen werden. (Präprozessordefinitionen).

    DLL_EXPORT_ORTE bzw. das dem Projektnamen angepasste Makro muss vor Funktionsnamen bzw. Klassennamen geschrieben werden, die den übergeordneten Projekten bekannt sein sollen.

    Die Worte in Grossbuchstaben kannst du frei wählen, wie es dir gefällt. Das fehlt dir noch, dann sollte es klappen.



  • Alter verwalter ich mach irgendwie was grundlegendes falsch. Kann mir irgendjemand nen komplettes Projekt schicken? Was funktioniert mit einer kleine funktion drinnen. Vielleicht kann ja einer mal was hoch laden bei Rapidshare oder so.

    MFG



  • Meinst du nicht, es wäre hilfreicher, zu gucken, was du falsch gemacht hast?
    Du hast doch schon was, oder? 🙂



  • so hier habe ich das mal hoch geladen. Hoffe ihr kommt mir Rapidshare klar 🙂

    Wäre echt cool wenn ich das endlich hin bekommen würde.



  • http://rapidshare.de/files/10499767/TeDa.rar.html

    hier ist der link nur wirklich 🙂



  • AFX_EXT_CLASS ist das Macro

    class AFX_EXT_CLASS CTeDaApp : public CWinApp  
    {
    ....
    }
    

    Das sollte helfen



  • Also ich spüre das ich nah dran bin bei mir kommt jetzt so ein feler hier.

    Definition von Statisches Datenelement für dllimport nicht erlaubt



  • PLZ Help!


Anmelden zum Antworten