.lib einbinden



  • Hallo,
    ich habe eine frage und zwar habe ich mir eine .lib/.dll-Datei erstellt, in der ich mir alle DirectInput Funktionen (die ich benötige) gekapselt habe und jetzt ist meine Frage, wie binde ich die ein? Also ich habe die Lib mit #pragma comment(lib, "DirectX_Klassen.lib") eingebunden, aber irgendwie sind die Objekte nicht verfügbar. Muss ich noch irgendwas machen? (Achja die Datei liegt im selben Verzeichnis wie meine .cpp/.h Dateien)

    MFG
    Neokil



  • Ich rate Dir dazu: Leg Dir mal testweise ein Win32-DLL Projekt an... dann schau mal in die erzeugten Header-Dateien. Genau so musst Du es auch machen.... und dann in dem Projekt, wo Du Deine LIB verwenden willst die Header-Datei Deiner LIB einbinden... dann sollte alles gehen...



  • also bei meiner IDE (Visual Studio 2008) gibt es kein Win32-DLL Projekt. Ich hab jetzt "MFC-DLL" genommen (Was heißt MFC?) Und dort gibt es eine Headerdatei, meintest du etwas wie:

    #pragma once
    
    #ifndef __AFXWIN_H__
    	#error "'stdafx.h' vor dieser Datei für PCH einschließen"
    #endif
    
    #include "resource.h"
    
    class CNAMEApp : public CWinApp
    {
    public:
    	CNAMEApp();
    
    public:
    	virtual BOOL InitInstance();
    
    	DECLARE_MESSAGE_MAP()
    };
    

    Und wenn ja wozu braucht man so etwas? Kann VS2008 nicht einfach aus der .lib alles rauslesen?

    MFG Neokil



  • #pragma comment(lib, "DirectX_Klassen.lib")
    statt
    #progma comment(lib, "DirectX_Klassen.lib")

    Dies solltest Du in Deine Header deiner LIB machen.

    Header brauchst Du.
    Nein man kann nicht aus der LIB auf die Member schließen da es dort ja Exporte gibt.
    Solltest Dir aber mal Grundlagen von C++ aneignen bevor die mit DLL spielst.



  • Beispiel:
    File|New|Project|Visual C++|Win32|Win32-Project|(Name eingeben)|Ok
    - Next|Application Type: DLL auswählen|Finish drücken



  • Also Danke für die Antwort.

    @ Unix-Tom: Ich habe mehrere Bücher über C++ durchgearbeitet und dort stand nichts darüber, wie/was in libs gespeichert wird.

    @ Jochen Kalmbach: Ich bekomme von dem Programm dann ein paar Dateien erstellt, kann ich jetzt einfach meine alten Code-Dateien zum Projekt hinzufügen oder muss ich die noch irgendwo eintragen? (also in einer von den vorgegebenen Dateien)

    PS.: Ich habe ein Tutorial gefunden: http://www.tutorials.de/forum/c-c-tutorials/312435-dll-erstellen-und-eigene-programme-einsetzen.html
    Dort steht (so weit ich das sehe), dass man nur eine Headerdatei mit

    #ifdef BUILD_DLL
        // the dll exports
        #define DLL_EXPORT __declspec(dllexport)
    #else
        // the exe imports
        #define DLL_EXPORT __declspec(dllimport)
    #endif
    

    braucht (eigentlich nur "#define DLL_EXPORT __declspec(dllimport)" weil er es sowiso in allen fällen macht oder) und dann die zu exportierende Klasse mit DLL_EXPORT "kennzeichnen". Dann muss man die HeaderDatei mit der Klassendeklaration einbinden und es funktioniert!

    MFG
    Neokil


Anmelden zum Antworten