riesen Problem mit DLLs und doppelten Symbolen



  • ok das ganze include zeugs wächst mir über den kopf :

    zum problem:

    ich will das VNC (www.tigtvnc.com) Viewer- und Serverprogramm in ein Programm bauen.
    einfach zusammensetzen geht es nicht, weil einige headerdatein und symbole gleichnamig sind, aber anders implementiert wurden.

    deshalb dachte ich mir, setze ich den viewer komplett in eine DLL-Datei und exportiere nur einige Steuerfunktionen.

    der Viewer !und! Server verwendet zlib, libjpeg, omnithread - Bibilotheken!

    wenn ich nun den viewer so umschreibe, dass daraus eine DLL-Datei gemacht wird, und setze dieses Projekt in den VNC-Server ein (importieren),
    dann werden ?merkwürdigerweise? alle Symbole von zlib, libjpeg, omnithread des VNCViewers auch in diese lib-datei exportiert.
    d.h. da in dem VNCServer zlib, libjpeg und omnithread auch importiert wurden, gibt es hunderte Linker-Fehler (doppelte Definition).

    kann man die VNCViewer lib-datei nicht so umbauen dass es auch anders geht?

    es geht halt darum, dass später in einem programm, "zwei programme" laufen können (thread).

    ich bin für jeden Ratschlag dankbar - da ich daran schon seit einer woche sitze.

    und das alles unter MVSc++6



  • was meinst du mit importieren?

    Mein Vorschlag für einen Lösungsversuch ist:

    In dem Project in dem deine main/winmain Funktion ist, include nur die Header Datei die du für deine dll geschreiben hast. Diese Headerdatei enthält nur die Definitionen und Funktionsprototypen, die du exportieren musst um deine Funktionen/Klassen aufzurufen.
    Sie darf keienrlei includes auf die kommerziellen Header machen.

    Dann füge deinem Projekt noch das zu deiner dll gehörende lib file hinzu, nicht mehr nicht weniger.

    Jetzt sollte es funktionieren.
    🙂



  • lol
    das ist ja merkwürdig.

    dasselbe habe ich gestern und vorgestern versucht,

    aber heute klappt es 🙂



  • Freut mich geholfen zu haben


Anmelden zum Antworten