Announcement

Collapse
No announcement yet.

BCB.Prog als dll an Pascalprog übergeben

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

  • BCB.Prog als dll an Pascalprog übergeben

    arbeiten mit dlls...

    hmm, ich werd nur zum teil daraus schlau... ich hab verstanden, dass eine dll grundsätzlich funktionen beinhaltet und diese dann entweder dynamisch geladen werden oder schon zu beginn als statische dll mit in den speicher gepresst werden... so weit so gut, hab auch schon n kleines proggi mit der statische version zum laufen gebracht.

    weiß irgend jemandvon euch, wie man ein ganzes vcl-prog an ein anderes "üergibt"? ich möchte in einem ältern pascal prog mein neues in c++ geschriebenes aufrufen per buttonOnClick... also neues fenster geht auf und dann is focus darauf und ich mach irgendwas damit und am ende liefert mir das neue an das alte einen dateipfad zurück...

    wie kann ich das komplette projekt, wenn man so will, als dll verpacken???

  • #2
    alle habe se feierabend seit gestern abend...

    gut, ich bin etwas fündig geworden:
    http://bcb-tutorial.c-plusplus.de/DL...artikel11.html
    ein relativ gutes tutorial... ich hab jetz auch das exportiern von funktionen in eine dll geschafft und soweit auch verstanden... nur wenn ich jetzt versuch eine dll mit form an eine exe zu hängen klappt es wieder nicht... wobei ich dem tutorial hier folge - ich häng immer wieder mit der gleichen doofen problem fest:
    aus meiner .cpp der dll
    Code:
    __declspec(dllexport) void FormShow(TComponent* Owner)
    {
    TDLLForm* DLLForm = new TDLLForm(Owner);
    DLLForm->ShowModal();
    }
    hier mal die fehlermeldungen:
    [C++ Fehler] Unit4.cpp(36): E2451 Undefiniertes Symbol 'TDLLForm'
    [C++ Fehler] Unit4.cpp(36): E2451 Undefiniertes Symbol 'DLLForm'
    [C++ Fehler] Unit4.cpp(36): E2303 Typname erwartet
    [C++ Fehler] Unit4.cpp(36): E2379 In Anweisung fehlt ;

    was soll das denn? da fehlt doch was essenzielles? ich sehs nicht!

    Comment


    • #3
      Eigene header + cpp datei anlegen

      in header
      extern "C"
      {
      __declspec( dllexport ) bool startProg();
      }

      in cpp

      #include <vcl.h>
      #pragma hdrstop

      #include "Prog_dllfunction.h" // deine h datei
      #include "deinemain.h"

      bool startProg()
      {
      bool ret = true; // kannst du auswerten oder auch nicht
      if( !deine main klasse )
      deine main klasse = new deine main klasse;
      else
      SetForegroundWindow( deine main klasse->Handle );

      return ret;
      }
      .... und noch mehr funktionen fals benötigt

      diese cpp mit in dein dll projekt.
      dort auch lib erzeugen mit aktivieren.

      mfg
      Fred

      Comment


      • #4
        danke für den ausführlichen tip!

        ich hab das zwar jetz erstmal noch mit dem aus pascalprog. starten gelassen, aber es dafür mit einer exe in der selbe projektgruppe "realisiert". es ist mir soweit gelungen, das formular aus der dll zu öffnen, nur wenn ich den suche-beginnen-button (is ne "art" windowsexlporer) drückekommt das hier:

        Im Projekt Project1.exe ist eine Exception der klasse EAccessViolatione mit der MAeldung 'Zugriffsverletzung bei Adresse 0231F37 in Modul 'SUCHFORM.DLL'.Lesen von Adresse 0000038C' aufgetreten

        Was sagt mir diese Meldung? Das ich versuche einen Speicherbereich zub öffnen oder ich diesen Bereich unzulässig öffnen oder schreiben will? und woran liegt das? muss ich vielleicht noch zusätzlich zu meiner "öffne die form"-methode noch irgendwas anderes exportieren? ich versteh das nich... alleine läuft das pro super

        bei problemen schick ich gern den code...
        mfg fiete

        Comment


        • #5
          poste oder schicke mal den code
          [email protected]

          mfg

          Comment

          Working...
          X