Fehler beim Linken



  • Hallo,

    ich bekommen einen Fehler beim Erstellen meinens Programms im Release Modus, der im Debug_Modus nicht auftritt:

    English_v2QuestionView.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: class CEnglsih_v2Doc * __thiscall CEnglish_v2QuestionView::GetDocument(void)" (?GetDocument@CEnglish_v2QuestionView@@QAEPAVCEnglsih_v2Doc@@XZ)
    

    Die Funktion GetDocument kommt ja aus dem Dokument, welches eigentlich, so dachte ich, über

    #include "englsih_v2Doc.h"
    

    im Quelltext eingebunden ist?

    Ich habe auch nichts extra in den Projektoptionen für den Debugmodus eingestellt.
    Die Ansichtsklasse CEnglish_v2QuestionView habe ich durch den Klassenassistenten erstellen lassen und von CObject abgeleitet.

    Kann mir jemande einen Tipp geben?



  • Hast du schon mal 'Alles neu Erstellen' versucht?



  • ratmann schrieb:

    Hallo,

    ich bekommen einen Fehler beim Erstellen meinens Programms im Release Modus, der im Debug_Modus nicht auftritt:

    English_v2QuestionView.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: class CEnglsih_v2Doc * __thiscall CEnglish_v2QuestionView::GetDocument(void)" (?GetDocument@CEnglish_v2QuestionView@@QAEPAVCEnglsih_v2Doc@@XZ)
    

    Die Funktion GetDocument kommt ja aus dem Dokument, welches eigentlich, so dachte ich, über

    #include "englsih_v2Doc.h"
    

    im Quelltext eingebunden ist?

    Dann schau mal in der enlsih_v2Doc.cpp nach, ob die Funktion dort auftaucht (den Namen zu kennen reicht vielleicht dem Compiler, aber der Linker will gerne wissen, wie die Funktion aufgebaut ist).

    Die Ansichtsklasse CEnglish_v2QuestionView habe ich durch den Klassenassistenten erstellen lassen und von CObject abgeleitet.

    Wieso von CObject? Dem Namen nach wäre CView als Basis geeigneter.
    (btw, da du schon den Klassenassistenten genutzt hast, warum hast du nicht gleich ein SDI/MDI-Projekt angelegt? Da legt dir die IDE schon alle wichtigen Klassen automatisch an)



  • Danke für die Hilfe,

    die Klasse ist natürlcih nicht von CObject sondern von CView abgeleitet.
    Habe den Fehler aber schon gefunden
    Bei mir fehlte die als Inline für Release definierte Funktion GetDocument(). Für die Debug-Version war Sie vorhanden. Sie war von einer #ifdef _DEBUG und #endif Direktive umschlossen

    Trotzdem Danke



  • Hallo,

    ich hab das gleiche Problem wie mein Vorredner. Bei mir triit auch im Releasemodus ein Fehler auf der im Debugmodus nicht vorkommt.

    Und zwar bekomme ich folgende Fehlermeldungen:

    LINK : warning LNK4075: /EDITANDCONTINUE wird aufgrund der Angabe von /INCREMENTAL:NO ignoriert
       Bibliothek Release/Imaging.lib und Objekt Release/Imaging.exp wird erstellt
    LINK : warning LNK4098: Standardbibliothek "MSVCRTD" steht in Konflikt mit anderen Bibliotheken; /NODEFAULT:Bibliothek verwenden
    nafxcw.lib(appcore.obj) : error LNK2001: Nichtaufgeloestes externes Symbol ___argv
    nafxcw.lib(appcore.obj) : error LNK2001: Nichtaufgeloestes externes Symbol ___argc
    nafxcw.lib(apphelp.obj) : error LNK2001: Nichtaufgeloestes externes Symbol __mbctype
    nafxcw.lib(filelist.obj) : error LNK2001: Nichtaufgeloestes externes Symbol __mbctype
    nafxcw.lib(timecore.obj) : error LNK2001: Nichtaufgeloestes externes Symbol __mbctype
    Release/Imaging.exe : fatal error LNK1120: 3 unaufgeloeste externe Verweise
    Fehler beim Ausführen von link.exe.
    

    Mein Problem liegt nun darin das ich Visual C++ Neuling bin und keinen Plan habe wo ich den Fehler suchen soll. Dann im Gegensatz zu meinen Vorrednern habe ich keinen Plan in welcher Datei ich suchen soll, da ich weder die nafxcm.lib noch die .obj Dateien in meinem Projektverzeichnis finde.

    Auch eine Suche nach den externen Symbolen hat nichts erbracht.

    Mit der Bitte um Hilfe
    S.



  • Erstens: Abgesehen davon, daß es auch mit dem Linker zu tun hat, ist das ein völlig anderes Problem 😉

    Zweitens:

    Bachtler schrieb:

    LINK : warning LNK4098: Standardbibliothek "MSVCRTD" steht in Konflikt mit anderen Bibliotheken; /NODEFAULT:Bibliothek verwenden
    

    Was hat die "MSVCRTD" auch in den Linker-Optionen der Release-Version zu suchen? (das "D" steht für "Debug")



  • Ok und wie bekomme ich diese Debugbibliothek bzw. den Fehler an sich aus dem Programm?

    S.


Anmelden zum Antworten