www.mikrocontroller.net

Forum: PC-Programmierung MS Visual c++ 2010 FTDI Bibliothek hinzufügen


Autor: Stefan_KM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich möchte in meinem Projekt unter MS Visual C++ 2010 über die USB 
Schnittstelle den FT232R ansprechen. Dazu habe ich die folgenden Dateien 
zur Verfügung:

FTD2xx.dll,
FTD2xx.LIB
FTD2xx.h.

Die dll ist im Windows System Ordner vorhanden und zusätlizch auch im 
Pfad meines Projektes. Ich habe nun versucht die LIB Datei meinem 
Projekt hinzuuzfügen. Leider ohne Erfolg. Die Header Datei läßt sich 
doch erst nach dem Einbinden der LIB verwenden. Oder nicht?

Wie kann ich also die LIB Datei meinem Projekt bekannt machen?

Danke für jeden Tipp

Autor: manateemoo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
#pragma comment(lib,"ftd2xx.lib")

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Verwendung der Library setzt voraus, daß Du mit C oder C++ 
programmierst, nicht mit "C++/CLI" (früher auch als "Managed C++" 
bezeichnet). Das schließt die Verwendung der .Net-Umgebung aus.

Um in einem C oder C++ - Projekt eine Library zu verwenden, gibt es im 
Visual C-Compiler zwei Möglichkeiten.
Einerseits kann über die Projektverwaltung die Library angegeben werden, 
andererseits gibt es auch eine Möglichkeit, direkt im Sourcecode einen 
Kommentar zu hinterlassen, der vom Compiler an den Linker weitergeleitet 
wird.

Der erste Weg besteht darin, in der Projektverwaltung ("Solution 
Explorer") die Eigenschaften des Projektes anzuzeigen. Im Baum mit den 
"Configuration Properties" wird auf "Linker" navigiert und dort unter 
"Input" als "Additional Dependency" die Library eingetragen.

Der alternative Ansatz besteht darin, im Sourcecode folgendes 
einzutragen:

  #pragma comment(lib, "meinelibrary.lib")


Allerdings ist es nicht zwingend erforderlich, die Library zu verwenden. 
Das ist eine sogenannte "Importlibrary", die Funktionsstummel enthält, 
die mit der DLL verknüpft sind. Der Sinn davon ist es, das Aufrufen von 
in DLLs enthaltenen Funktionen genauso einfach zu machen wie den Aufruf 
von anderen Funktionen.

Der Nachteil ist, daß das Programm bereits beim Laden die DLL benötigt, 
ohne DLL gibt es nur eine von Windows generierte Fehlermeldung, daß die 
DLL nicht gefunden werden kann.

Bei einem Programm, das auch ohne so eine DLL eine sinnvolle Funktion 
haben könnte, wäre das ungünstig.

Auch daher gibt es die Möglichkeit, eine DLL "von Hand" zu laden. Dies 
geschieht mit den Win32-API-Funktionen LoadLibrary und GetProcAddress.

Mit GetProcAddress wird ein Funktionspointer auf eine in der geladenen 
DLL enthaltene Funktion bestimmt.

Diese Vorgehensweise wird übrigens auch in Visual Basic angewandt, um 
mit in DLLs enthaltenen Funktionen zu arbeiten.

Autor: Stefan_KM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, danke wieder was gelernt.

Gibt es denn ein Möglichkeit mit C++/CTI die gewünschte DLL einzubinden?

Wenn ich die Zeile

#pragma comment(lib, "meinelibrary.lib")

einfüge, steht in der Kommandozeile beim Compelieren: Bibliothek wird 
ignoriert.

So geht es also nicht.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan_KM schrieb:
> Gibt es denn ein Möglichkeit mit C++/CTI die gewünschte DLL einzubinden?

http://ftdichip.com/Support/SoftwareExamples/CodeE...

Beispiele 2 und 4 ansehen.

Autor: Arc Net (arc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rufus t. Firefly schrieb:
> Die Verwendung der Library setzt voraus, daß Du mit C oder C++
> programmierst, nicht mit "C++/CLI" (früher auch als "Managed C++"
> bezeichnet). Das schließt die Verwendung der .Net-Umgebung aus.

Nein, für genau so etwas ist C++/CLI eigentlich nur zu gebrauchen...
Zum Testen mal ein C++/CLI/WinForms Projekt erstellen, zum Projekt die 
h, DLL und lib hinzufügen, Header und Windows.h includen fertig.
  Form^ form = gcnew Form1();

  DWORD numDevices;
  FT_STATUS status;
  status = FT_CreateDeviceInfoList(&numDevices);
  FT_DEVICE_LIST_INFO_NODE* nodes;
  if (status == FT_OK && numDevices > 0) {
    nodes = new FT_DEVICE_LIST_INFO_NODE[numDevices];
    if (nodes) {
      FT_GetDeviceInfoList(nodes, &numDevices);
      form->Text = gcnew String(&nodes[0].Description[0]);

    }
  }

http://msdn.microsoft.com/library/ms235282.aspx

Autor: Stefan_KM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Nein, für genau so etwas ist C++/CLI eigentlich nur zu gebrauchen...
>Zum Testen mal ein C++/CLI/WinForms Projekt erstellen, zum Projekt die
>h, DLL und lib hinzufügen, Header und Windows.h includen fertig.

Und wie wird das gemacht?

Autor: Arc Net (arc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan_KM schrieb:
>>Nein, für genau so etwas ist C++/CLI eigentlich nur zu gebrauchen...
>>Zum Testen mal ein C++/CLI/WinForms Projekt erstellen, zum Projekt die
>>h, DLL und lib hinzufügen, Header und Windows.h includen fertig.
>
> Und wie wird das gemacht?

In der Solution das Projekt auswählen und die FTD2XX.h und FTD2XX.lib 
hinzufügen (entweder rechte Maustaste oder über das Menu Projekt oder 
Alt+Shift+A) (die DLL muss nicht unbedingt hinzugefügt werden).
Im Quelltext dann die Includes.
#include "stdafx.h"
#include <Windows.h>
#include "FTD2XX.h"
...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.