none
Solution multiple Projekte als DLL RRS feed

  • Frage

  • Servus Leute,

    ich habe eine Solution mit mehreren Projekten. Eine dieser Projekte ist eine *.exe, alle anderen werden als *.dll übersetzt. Folgerichtig kommunizieren diese *.dll mit der *.exe. Klappt soweit ganz gut.

    Nun habe ich meine Solution um ein neues Projekt (auch *.dll) erweitert, allerdings kommuniziert diese nicht mit der *.exe, sondern mit einer anderen *.dll aus derselben Solution. Genau da ist mein Problem:

    1>Linking...
    1>   Creating library C:\Solution\build-v8\Projekt1\Debug\Projekt1.lib and object C:\Solution\build-v8\Projekt1\Debug\Projekt1.exp
    1>Odeon_IF.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall Odeon_Server::Odeon_Server(void)" (__imp_??0Odeon_Server@@QAE@XZ) referenced in function "public: __thiscall Odeon_Server::Odeon_Server(char const *,char const *,char const *,char const *,char const *)" (??0Odeon_Server@@QAE@PBD0000@Z)
    1>Odeon_IF.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual __thiscall Odeon_Server::~Odeon_Server(void)" (__imp_??1Odeon_Server@@UAE@XZ) referenced in function "public: __thiscall Odeon_IF::~Odeon_IF(void)" (??1Odeon_IF@@QAE@XZ)

    Das Projekt1 ist eine *.dll, welche mit der Main.exe kommuniziert; also entsprechendes ExportFlag gesetzt.
    Jedoch kommuniziert diese auch mit der neuen Odeon_Server.dll.

    Wenn ich bei Projekt1 unter Project Properties --> Linker --> Input --> Additional Dependencies "Odeon_server.lib" eintrage, ist der Fehler weg, allerdings stresst dann meine main.exe mit der Projekt.dll herum..

    Ich vermute, dass eine *.dll nicht gleichzeitig Exportiert und Importiert werden kann?!?!?!?!

    Kann mir jemand helfen?

    Ich danke allen Hinweisen

    Gruß LesPaul

    Dienstag, 20. September 2011 12:14

Alle Antworten

  • Ich würde eher sagen, Du hast bestimmte Konstruktoren deklariert aber nicht implementiert.
    Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de
    Dienstag, 20. September 2011 14:02
    Moderator
  • Hallo,

    erstmal sorry für die späte Antwort. Ich war zwischenzeitlich einem anderen Projekte zugeteilt.

    Stand der Dinge:

    Projekt1.dll soll allgemeine Funktionen aus der Odeon_Server.dll benutzen und unter anderem eine Instanz davon erstellen; wohlgemerkt beides *.dll's.

    Odeon_Server.dll habe ich nun erfolgreich erstellen können. jeweils public Konstruktor und public Destruktor. Beides deklariert und definiert.

    1>Linking...
    1>   Creating library C:\MyProject\Debug\Projekt1.lib and object C:\MyProject\Debug\Projekt1.exp
    1>Projekt1.obj : error LNK2019: unresolved external symbol "public: __thiscall Odeon_Server::Odeon_Server(void)" (??0Odeon_Server@@QAE@XZ) referenced in function "public: bool __thiscall Projekt1::create_Odeon_Server(class QString)" (?create_Odeon_Server@Projekt1@@QAE_NVQString@@@Z)
    1>C:\MyProject\Debug\Projekt1.dll : fatal error LNK1120: 1 unresolved externals

    Weiterhin habe ich die Odeon_Server.lib und dessen Pfad in Projekt1 --> Project Properties --> Linker --> General (Pfad) und Input (Odeon_Server.lib) angegeben.

    Ich habe ausserdem im Netzt gelesen, dass ich für mein Odeon_Server _kein_ abstraktes Interface brauche?

    Vielen Dank für eure Hilfen.

    Gruß Lespaul




    • Bearbeitet Les Paul Freitag, 11. November 2011 14:04
    Freitag, 11. November 2011 14:01