none
dll-Bibliothek einfügen RRS feed

  • Frage

  • Ich habe bei mir ein Beispielprogramm vorliegen das mittels des MFC ClassWizard von Bosch angelegt wurde, um die Benutzung von verschiedenen Funktionen zum Datentransfer an eine Robotersteuerung beispielhaft zu erklären. Ich will dieses Programm jetzt mit Windows Forms nachbauen!

    In der Programmbeschreibung steht:

    "Zur Entwicklung von eigenen Oberflächen werden "rho4Fkt.lib","rho4Fkt.dll","ROPS4Fkt.lib","ROPS4Fkt.dll" und die zu den rho4 Bibliotheksfunktionen gehörenden Headerfiles "r*.h"...benötigt"

    Meine Fragen sind jetzt:

    -Was sind diese .libs? wie kann ich diese ins Projekt einfügen?

    - wenn ich versuche die dlls einzubinden kommt der Fehler:

    "...konnte kein Verweis hinzugefügt werden, da sie weder eine .NET-Assembly noch ein ein registriertes ActiveX-Steuerelement ist"

    was bedeutet das?

    kann ich diese Bibliotheken mit C++/CLI überhaupt nutzen?

    -> kann ich dieses Programm überhaupt mit C++/CLI nachbauen???

     

     

    Montag, 27. September 2010 11:27

Alle Antworten

  • Meine Fragen sind jetzt:
    -Was sind diese .libs?

    Da solltest Du Deinen Betreuer fragen!
     > wie kann ich diese ins Projekt einfügen?

    In C/C++ mittels:
    #pragma comment(lib, "name-der.lib")

    - wenn ich versuche die dlls einzubinden kommt der Fehler:
    "...konnte kein Verweis hinzugefügt werden, da sie weder eine .NET-Assembly noch ein ein registriertes ActiveX-Steuerelement ist"

    Da es sich um "native" DLLs handelt, kannst Du diese nicht über "Referenzen" einbinden sondern nur durch die LIB-Dateien. Dadurch wird die Verbindung zur DLL automatisch hergestellt. Es kann aber sein, dass Du die DLLs noch von Hand in das Verzeichnis der EXE kopieren musst!

    kann ich diese Bibliotheken mit C++/CLI überhaupt nutzen?

    Ja.

    ->  kann ich dieses Programm überhaupt mit C++/CLI nachbauen???

    Ich kenne Dein programm nicht.
    Beachte aber bitte:
    http://blog.kalmbach-software.de/de/2010/03/05/ccli-und-winforms-macht-keinen-sinn/

    Erstelle lieber eine Oberfläche mit C# und eine "kleine" C++/CLI Komponente, welches das InterOp zur nativen Welt herstellt!

    Aber so gut kenne ich Deine Welt nicht um eine genaue Aussage treffen zu können...


    Jochen Kalmbach (MVP VC++)
    Montag, 27. September 2010 11:42
  • Doch, du kannst die Bibliothek verwenden. Möglichkeiten gibt's mehrere. Du kannst z.B.  eine Mixed-DLL machen, die die *.h und die *.lib files verwendet. (#include "xxx.h"   und  Projekteigenschaften=> Linker=>Eingabe=>zusätzliche Abhängikeiten=>Liste mit *.lib).

    Edit:

    Deine DLLs sind vermutlich COM-DLLs. Mit der *.h Datei kannst du den Zugriff auf die DLL einfach einbinden, indem die #include "blabla schreibst". Die Lib-Datei enthält den bereits kompilierten (und nicht gelinkten) Code, welcher automatisch die DLL anspricht. Das musst du dem Projekt auch noch beitun.

    • Bearbeitet GreatVolk Montag, 27. September 2010 11:50 Antworterweiterung
    Montag, 27. September 2010 11:45
  • Ich hab die lib jetzt über Projekteigenschaften=>Linker=>Eingabe usw. eingebunden und da gibts erstmal keinen Ärger mit...

     

    was bedeutet?:

    "Das musst du dem Projekt auch noch beitun."

    reicht das etz was ich oben gemacht hab oder net???

     

    Zwei der Drei header-Dateien mag er wohl, aber bei der einen ra.h hat er beim übersetzen einiges zu mosern:

    1>c:\dokumente und einstellungen\fajuberg\eigene dateien\visual studio 2008\projects\steuerungsverbindung\steuerungsverbindung\ra.h(81) : error C2061: Syntaxfehler: Bezeichner 'DWORD'
    1>c:\dokumente und einstellungen\fajuberg\eigene dateien\visual studio 2008\projects\steuerungsverbindung\steuerungsverbindung\ra.h(366) : error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'lpRhoName'
    1>c:\dokumente und einstellungen\fajuberg\eigene dateien\visual studio 2008\projects\steuerungsverbindung\steuerungsverbindung\ra.h(366) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
    1>c:\dokumente und einstellungen\fajuberg\eigene dateien\visual studio 2008\projects\steuerungsverbindung\steuerungsverbindung\ra.h(366) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
    1>c:\dokumente und einstellungen\fajuberg\eigene dateien\visual studio 2008\projects\steuerungsverbindung\steuerungsverbindung\ra.h(367) : error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'lpPCName'
    1>c:\dokumente und einstellungen\fajuberg\eigene dateien\visual studio 2008\projects\steuerungsverbindung\steuerungsverbindung\ra.h(367) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
    1>c:\dokumente und einstellungen\fajuberg\eigene dateien\visual studio 2008\projects\steuerungsverbindung\steuerungsverbindung\ra.h(367) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.

    Irgendwie mag er die Bezeichner

    LPSTR            lpRhoName;

    LPSTR            lpPCName;

    DWORD       dwCounter,

    nicht!!! Die sind auch von einem mir unbekannten Datentyp, was kann ich da jetzt machen?

     

    Montag, 27. September 2010 13:43
  • #include <windows.h> !?
    Jochen Kalmbach (MVP VC++)
    Montag, 27. September 2010 13:44
  • #include <windows.h> hat nichts gebracht...

    Diese header wurden für windowsNT geschrieben, glaub ich und ich programmier hier auf WindowsXP. kann das iwas damit zu tun haben?

    wenn ich

    typedef unsigned long DWORD;
    typedef char* PSTR, *LPSTR;
    typedef bool BOOL;

    angebe frisst er es fürs erste^^

    Nur ob dann später überhaupt was funktioniert, frag ich mich, wenn ich das einfach so angebe???

    Montag, 27. September 2010 14:53
  • > Diese header wurden für windowsNT geschrieben, glaub ich und ich programmier hier auf WindowsXP. kann das iwas damit zu tun haben?

    Nein. Diese Header werden auch noch bei Windows 7 Programmen verwendet.


    Jochen Kalmbach (MVP VC++)
    Montag, 27. September 2010 15:05