MSVC erstellt lib statt exe und meckert über Einstiegspunkt



  • Hi,

    vielleicht kann mir wieder Mal geholfen werden. 🙂

    Ich habe bei Visual C++ 2010 Express Edition eine Projektmappe, wo es diverse Projekte gibt. Einige sind libs, die werden auch korrekt kompiliert. Ich habe auch ein exe-Projekt, was normal läuft.

    Jetzt habe ich ein völlig neues Projekt erstellt, das als Anwendungstyp auch exe hat. Es wird beim Erstellen jedoch eine lib erstellt:

    Bibliothek "... .lib" und Objekt "... .exp" werden erstellt.

    Und er sagt, der Einstiegspunkt muss definiert werden. Klar, dass keiner erstellt wird, wenn es eine lib ist, die main-Funktion gibt es nämlich.

    Hier einige Eigenschaften des Projekts:
    Zielerweiterung: .exe
    Konfigurationstyp: Anwendung (exe)
    Linker: Ausgabedatei: (OutDir)(OutDir)(TargetName)$(TargetExt)

    Weiß nicht, ob was anderes noch eine Rolle spielt.

    Ich verstehe das natürlich nicht, jemand eine Idee? 😞


  • Mod

    Schau Dir mal die Linker Optionen an, was dort erzeugt wird.



  • Also ich poste Mal kurz überladen die Befehlszeile:

    /OUT:"C:*[...]\SDL OGL\Debug\Silva3D.exe" /NOLOGO "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" /MANIFEST /ManifestFile:"Debug\Silva3D.exe.intermediate.manifest" /ALLOWISOLATION /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:"C:*[...]\SDL OGL\Debug\Silva3D.pdb" /PGD:"C:*[...]*\SDL OGL\Debug\Silva3D.pgd" /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X86 /ERRORREPORT:QUEUE

    Ich hab zumindest Mal Pfade durch [...] gekürzt. Jedenfalls steht bei OUT anscheinend eine exe. "Vom übergeordneten Projekt oder projektbezogen" ist übrigens angehakt, falls das auch irgendeine Aussage haben sollte... Und es gibt keine Projektabhängigkeiten, falls das auch zu dem Verhalten führen könnte.

    Irgendwie hab ich das Gefühl, ich sollte die Mappe neu erstellen, auch wenn das wg den Verzeichnissen für alle Projekte etwas aufwendig ist... noch ne Idee? 🙂



  • Wie siehet denn Deine "main" aus? Und wie ist die _genaue_ Fehlermeldung?
    Bist Du sicher, dass Du ein Windows-Programm und kein Consolen-Programm erstellen willst? "main" bzw. "WinMain"?



  • Hi,

    so, ein Problem gelöst. Es lag nicht an den Linkereinstellungen, sondern es war das alte Problem, dass windows zusammen mit OpenGL und SDL ein #undef main erfordert, damit man eine eigene main schreiben kann... Einstiegspunkt geht somit und dann erstellt er zusätzlich zu den Bibliotheken auch die exe, die er ordnungsgemäß ausführt.

    Dennoch frage ich mich, wieso eine lib erstellt wird? Das geschieht nur, wenn ich mein anderes Projekt über #pragma comment(lib, "...") einbinde. Lasse ich das weg und reduziere das Projekt, wird keine lib erstellt. Wie kann so was kommen?



  • Vermutlich ist irgendwo eine dllexport definiert; oder Du hast eine COM-EXE erstellt...



  • Ay, genau... dllexport war definiert. Voll ins Schwarze, vielen Dank 🙂


Anmelden zum Antworten