tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
JA
ANTWORTEN
20
ZUGRIFFE
493
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    Hallo ich schreibe gerade ein DLL und bisher hat auch alles geklappt nun wollte ich noch etwas ändern und habe 2 Datein hinzugefügt Ver.h und Ver.cpp in Ver.h steht das:
    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    #include <string> 
     
    using namespace std;
     
    //string g_sDatentyp;
    //bool b_OK;
     
    class ver_ent
    {
    public:
        string ver();
        string ent();
    };
    und in Ver.cpp:
    Code cpp:
    1
    2
    3
    4
    5
    6
    
    #include <Ver.h>
     
    string ver_ent::ver()
    {
        Beep(200,200);
    }
    nun habe ich ein projekt mit der DLL Datei gemacht ich konnte auch alles verwenden bis auf die Klasse Ver funktion ver!
    Was mache ich falsch****
    Danke MFG
     
    Fehlermeldung bitte!
    Google - Dein Freund und Helfer

  2. #2
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    Hi

    wo ist das declspec?
     

  3. #3
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    In einer andere Datei
    Der aufbau der Dll ist der hier:
    TestDLL.cpp = Eingie wichtige sachen
    TestDLL.h = declspec ( also noch mehr mit Präprozesoor usw) danach kommen noch einige includes:
    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    #pragma once
     
    #ifdef TEST_EXPORTS
    #define TEST_API __declspec( dllexport )
    #else
    #define TEST_API __declspec( dllimport )
    #endif
    //Präprozessor ist richtig!
    ...
    ...
    ...
    #include "Ver.h"
    Und in meine Testprogramm ist dann nur die libs gelinkt usw und halt #include<TestDLL.h> wo dann auch direkt nach #pragma once declspec kommt
    MFG Danke
     
    Fehlermeldung bitte!
    Google - Dein Freund und Helfer

  4. #4
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    In einer anderen Datei...
    Code cpp:
    1
    2
    3
    4
    5
    
    #ifdef TEST_EXPORTS
    #define TEST_API __declspec( dllexport )
    #else
    #define TEST_API __declspec( dllimport )
    #endif
    Ist dir klar, was dieser Block tut?
    Solange du nirgends TEST_API und TEST_EXPORTS hinschreibst, tut der gar nichts.

    Du musst vor
    Code cpp:
    1
    
    class ver_ent
    schon TEST_API schreiben.
    Wie hast du denn das Ganze bisher mit klassenlosen Funktionen gemacht?

    Und falls du es noch nicht hast: In den Projekteinstellungen der DLL muss TEST_EXPORT definiert werden.

    Gruß
     

  5. #5
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    Oh hehe stimmt
    Aber jetzt habe ich es ergänzt:
    Ver.h
    Code cpp:
    1
    2
    3
    4
    5
    
    class TEST_API ver_ent
    {
    public:
    string ver();
    };
    Ver.cpp keine änderung
    und trotzdem bekomme ich: ver nichtdeklarierter bezeichner!
    Danke

    EDIT:
    Test Exports ist definiert also der untere Code abschnitt ist ausgeblendet (in msvc++ 2010)
     
    Fehlermeldung bitte!
    Google - Dein Freund und Helfer

  6. #6
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.

    Einmal fehlt in deiner Methode ein return.

    Dann zeig mal den Code wo du ver_ent verwendest.

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  7. #7
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    Hmm...willst du mal das Ganze als Zip raufladen?
     

  8. #8
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    Hallo
    Eigentlich fehlt kein return bei anderen gings ja auch!
    ver_ent verwende ich in Main.cpp(ist ein anderes projekt wo die Dll hinzugelinkt ist) und dort einfach den #include um alle Headerdateien einzubinden und dann einfach ver();
    und ver ist in Ver.cpp als string ver();
    Danke
     
    Fehlermeldung bitte!
    Google - Dein Freund und Helfer

  9. #9
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    Als zip ist das ganze zu groß denn die komplette DLL hängt noch von einer GameEngine ab nunja und die hat schon bissl code!
    MFG
     
    Fehlermeldung bitte!
    Google - Dein Freund und Helfer

  10. #10
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Zitat Zitat von MSVCplusplus Beitrag anzeigen
    Eigentlich fehlt kein return bei anderen gings ja auch!
    Es fehlt definitiv ein return, da die Methode einen std::string zurückgeben muß.
    Zitat Zitat von MSVCplusplus Beitrag anzeigen
    ver_ent verwende ich in Main.cpp(ist ein anderes projekt wo die Dll hinzugelinkt ist) und dort einfach den #include um alle Headerdateien einzubinden und dann einfach ver();
    und ver ist in Ver.cpp als string ver();
    Was schwafelst du da?

    Ist es denn zuviel verlangt 3 Zeilen Code zu zeigen? Statt Code zu posten wo man nur mal kurz draufblicken muß, schreiben alle Esays wo dann niemand wirklich weiß wie der Code aussieht. Von der folgenden Diskussion warum das alles schon OK wäre und der Code ja gar nicht fehlerhaft sein kann ganz zu schweigen.

    http://www.tty1.net/smart-questions_de.html

    Du machst vermutlich einfach etwas falsch.

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  11. #11
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    OOKKKK also ich versteh die Welt nicht mehr ich habe es jetzt mal in der Main so ausprobiert:
    Code cpp:
    1
    2
    
    ver_ent v;
    v.ver();
    und welch ein wunder es Beept
    aber warum geht ds nur so****?
    Danke MFG
     
    Fehlermeldung bitte!
    Google - Dein Freund und Helfer

  12. #12
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Zitat Zitat von MSVCplusplus Beitrag anzeigen
    OOKKKK also ich versteh die Welt nicht mehr ich habe es jetzt mal in der Main so ausprobiert:
    Code cpp:
    1
    2
    
    ver_ent v;
    v.ver();
    und welch ein wunder es Beept
    aber warum geht ds nur so****?
    Das nennt sich C++

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  13. #13
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    @deepthroat was soll ich den posten fürn Code les mal durch alle Datein sin gepostet und wenn ihr wirklich die komplette DLL haben wollt gibts nett
    naja das du gleich so aggresiv bist -.-
    liegt wohl an mir naja -.-
    Danke
    @deepthroat Thread 2:
    Wie ist C++? bei anderen klassen mach ich auch einfach nur Init Exit() usw und die sehen genauso aus und gehen anderst
    OMG Ich bin echt verwirrt******
    MFG
     
    Fehlermeldung bitte!
    Google - Dein Freund und Helfer

  14. #14
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    Sry tread mit post verwechselt -.-
     
    Fehlermeldung bitte!
    Google - Dein Freund und Helfer

  15. #15
    Steiner_B Steiner_B ist offline Mitglied Platin
    Registriert seit
    Mar 2004
    Ort
    Wien
    Beiträge
    573
    Hallo,

    Test Exports ist definiert also der untere Code abschnitt ist ausgeblendet (in msvc++ 2010)
    wo hast den den TEST_EXPORT genau definiert? Es müsste entweder in den Projekteinstellungen der DLL sein, oder in der ver.cpp.

    Einmal fehlt in deiner Methode ein return.
    Dem kann ich nur zustimmen, da der C++ Standart vorschreibt das jede Methode die nicht void ist ein return-Statement enthalten muss. Da deine Methode offensichtlich eine string zurückgeben soll, muss auch irgendwo ein return mit einem String stehen.
     

Ähnliche Themen

  1. Properties in Klassen mit geerbten abstrakten Klassen
    Von Razorhawk im Forum .NET Café
    Antworten: 4
    Letzter Beitrag: 11.07.07, 14:35
  2. C# und C++ DLLs
    Von sirvival im Forum .NET Café
    Antworten: 17
    Letzter Beitrag: 01.11.06, 09:49
  3. Antworten: 2
    Letzter Beitrag: 05.07.06, 14:55
  4. Dlls
    Von Cirrizt im Forum Delphi, Kylix, Pascal
    Antworten: 2
    Letzter Beitrag: 05.11.04, 08:29
  5. C++ DLLs in VB
    Von Zorck im Forum C/C++
    Antworten: 8
    Letzter Beitrag: 21.01.03, 19:31

Stichworte