Announcement

Collapse
No announcement yet.

Mit Microsoft Visual C erstellte DLL in C++ Builder Prog einbinden

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Mit Microsoft Visual C erstellte DLL in C++ Builder Prog einbinden

    Hi,
    ich will eine mit Microsoft Visual C++ erstellte DLL statisch in mein Programm einbinden, was sinvollerweise kein Problem sein sollte.
    Glücklicherweise habe ich neben dem .Lib file auch das .dll file, denn wenn ich das mitgelieferte Lib-File einbinden will kommt die Meldung:
    ... containes invalid OMF-Record, typ 0x21.
    Nachdem ich aus der dll mit Hilfe von IMPLIB ein neues Lib-File generiert habe ist dieser Fehler zwar weg, aber der Linker kann sämtliche Funktionen der DLL nicht finden und meldet unknown externals.
    Wer kann mir da weiterhelfen ?

    Danke für schnelle Antworten
    Bye - Peter

  • #2
    M.E. brauchst du noch die Header-Datei??

    Da stehen doch die Prototypen der Funktionen/Klassen der DLL drin??
    Christia
    Christian

    Comment


    • #3
      Hi Christian,
      die Headerdatei habe ich natürlich. Er meckert ja auch nicht beim Compiler sondern beim Linken.

      Bye - Pete

      Comment


      • #4
        Unter Projekt -> Optionen -> Erweiterte Compiler Optionen

        gibt es das Kästchen MFC-Kompatibilität

        Vielleicht das ankreuzen??

        Vielleicht mit implib neuen Lib erstellen??

        Verstehe das eigentlich nicht, 3 Dinge braucht der Dll-Entwickler (Feuer, Pfeife,..) nein

        Dll, lib,und Header-Datei

        Christia
        Christian

        Comment


        • #5
          Hi Christan,

          auch MFC-Kompatibilität bringt nix. Ich vermute aber noch einen Fehler in der Header-Datei. Wenn ich mir die DLL in der Schnellansicht anschaue, sind vor den Routinen 2 ? also ??Routine.

          Bye - Pete

          Comment


          • #6
            Hi,

            die MSVC und die Borland DLLs/LIBs haben unterschiedliche Formate.

            OMF und COFF (hab jetzt leider keine Zeit um genauer nachzulesen -> wer, wieso, weshalb, warum)

            Im BIN Pfad von C++ Builder gibt es ein Commandline - Tool namens 'coff2omf.exe' zum konvertieren der einzelnen Formate.

            Probier das mal.

            Heik

            Comment


            • #7
              Das liegt vermutlich an der unterschiedlichen Erzeugung von Underscores am Beginn der Funktionsnamen. Als Workaround kann eine Def-Datei erzeugt werden, aus der dann die Import-Lib erzeugt wird.

              LIBRARY XXX
              DESCRIPTION 'XXX.DLL Datenintegration'
              HEAPSIZE 2000000

              EXPORTS
              Init @4 ; Initialisierung
              Disconnect @5 ; Abmelden von der Datenbank
              Analysis @6 ; Analyse Einzelelement
              ClassAnalysis @7 ; Analyse Klasse
              ResetAnalysis @8 ; Analyse Reset
              Synthesis @9 ; Synthese Einzelklasse

              Anschließend:
              implib -c -f xxx.lib xxx.de

              Comment


              • #8
                Leider sind die Zeilenumbrüche wg. Html nicht durchgekommen

                Comment


                • #9
                  Alles klar, hat hingehauen. Das mit dem Fotmat habe ich einfach durch das Erzeugen einer neuen LIB-Datei mit implib hinbekommen.<BR>
                  Die Fragezeichen vor dem Namen haben sich dann durch den Tip mit der DEF-Datei erledigt. - Jetzt geht's.

                  Danke an alle!!

                  Comment

                  Working...
                  X