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


von Stefan_KM (Gast)


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

von manateemoo (Gast)


Lesenswert?

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

von Rufus Τ. F. (rufus) Benutzerseite


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.

von Stefan_KM (Gast)


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.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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

http://ftdichip.com/Support/SoftwareExamples/CodeExamples/VC++.htm

Beispiele 2 und 4 ansehen.

von Arc N. (arc)


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.
1
  Form^ form = gcnew Form1();
2
3
  DWORD numDevices;
4
  FT_STATUS status;
5
  status = FT_CreateDeviceInfoList(&numDevices);
6
  FT_DEVICE_LIST_INFO_NODE* nodes;
7
  if (status == FT_OK && numDevices > 0) {
8
    nodes = new FT_DEVICE_LIST_INFO_NODE[numDevices];
9
    if (nodes) {
10
      FT_GetDeviceInfoList(nodes, &numDevices);
11
      form->Text = gcnew String(&nodes[0].Description[0]);
12
13
    }
14
  }

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

von Stefan_KM (Gast)


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?

von Arc N. (arc)


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.
1
#include "stdafx.h"
2
#include <Windows.h>
3
#include "FTD2XX.h"
4
...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.