logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak dołączyć i używać FTD2XX.dll w Visual C++ 2005? Szukam przykładowego kodu

kolanopan 19 Kwi 2008 11:35 4467 5
REKLAMA
  • #1 5053012
    kolanopan
    Poziom 12  
    Posty: 82
    Pomógł: 5
    Witam, środowisko Visual'a jest dla mnie obce, dotychczas popełniałem programy w Borlandzie 6. Teraz robie prace inżynierską i tu jest konieczność wykorzystania Visual'a 2005, lub 2008. 2008 to się boje o żadnych książek na jego temat nie znalazłem. Ale nie o tym ma być...

    Jak dołączyć i wykorzystać biblioteki FTD2XX.dll w Visualu i z nich korzystać, na stronie producenta są przykłady ale dla visual'a 6.0, nie chcą sie one kompilować nawet w 2005.

    Ewentualnie jakie książki polecacie do nauki pisania w Visual C++ 2005 lub 2008.

    Będę wdzięczny za każdą sugestie lub fragment przykładowego kodu.
  • REKLAMA
  • #2 5054126
    x3r
    Poziom 18  
    Posty: 126
    Pomógł: 32
    Ocena: 2
    Używasz Dllimport-a. Masz tu przykład innej dll jak to się robi:

    
    [DllImport("user32", EntryPoint = "SendMessageA")]
    protected static extern int SendMessage(int hwnd, int wMsg, int wParam, [MarshalAs(UnmanagedType.AsAny)] object lParam);
    


    pozdrawiam
  • REKLAMA
  • #3 5059168
    kolanopan
    Poziom 12  
    Posty: 82
    Pomógł: 5
    nic a nic z tego nie rozumiem
    myślałem ze wystarczy gdzieś dopisac include... :|:|

    :cry::cry::cry:
  • REKLAMA
  • #4 5059576
    wiesniak
    Poziom 31  
    Posty: 1006
    Pomógł: 231
    Ocena: 52
    Nie zauważyłem różnic między VS2005, a 2008 jeśli chodzi o obsługę (na moim poziomie "używania"), więc przesiadkę polecam.

    Korzystanie z biblioteki dll jest bardzo proste.
    Musisz zadeklarować wskaźnik na funkcję w bibliotece dll, przykładowo:
    typedef int (__stdcall *fnDLL) (void);

    Int to typ zwracany, zamiast void możesz podać parametry wejściowe funkcji.

    Później w miejscu, gdzie chcesz skorzystać z biblioteki piszesz coś takiego:

    
    int wynik_funkcji=0;
    HINSTANCE hInst = LoadLibrary("nazwa_pliku.dll");
    if(hInst)
    {
    	JakasFunkcja=(fnDLL) GetProcAddress(hInst,"nazwa_funkcji_w_bibliotece_dll");
    	if(JakasFunkcja)
    		wynik_funkcji = JakasFunkcja();
    	FreeLibrary(hInst);
    }
    

    Myślę, że kod jest względnie prosty i jasny.
    Sprawdziłem ustawienia projektu w VS2008 i zgodnie z przewidywaniem, nic tam nie trzeba dopisywać.

    Include'a robi się przy linkowaniu do bibliotek statycznych, wtedy też trzeba w opcjach linkera podać nazwę pliku .lib.
  • REKLAMA
  • #5 5059823
    kolanopan
    Poziom 12  
    Posty: 82
    Pomógł: 5
    A widzisz, może ja nie do końca wiem które lpliki dołączyć, w paczce od producenta mam następujące pliki:
    
    FTD2XX.dll
    Ftd2xx.h
    FTD2XX.lib
    FTD2XX.sys
    ftd2xx.inf
    


    sys i inf to są sterowniki do urządzenia, po pierwsze 3 to biblioteki.
    Tak więc czy dobrze rozumiem, jak będę używał dll to go muszę jakby "zapowiedzieć" i odwoływać się do niego, tak jak napisane we wcześniejszych postach
    gdy użyje pliku *.h muszę jeszcze tego *.lib dodać tak ??

    Wiem że pewnie pytam o banały, ale pierwszy raz muszę użyć czegoś czego kompilator nie zawiera w sobie tylko jakieś dodatkowe pliki.
  • #6 5060877
    wiesniak
    Poziom 31  
    Posty: 1006
    Pomógł: 231
    Ocena: 52
    Sprawa wygląda tak: są dwa sposoby łączenia się z bibliotekami, statyczne i dynamiczne.
    Łącząc się statycznie musisz zrobić include'a pliku nagłówkowego (.h) oraz w visual studio musisz otworzyć właściwości projektu, przejść do "linker" -> "input" i tam podać nazwę pliku lib (łącznie z rozszerzeniem).
    Przy łączeniu dynamicznym nie dodajesz do projektu żadnego pliku nagłówkowego, ani nie zmieniasz ustawień projektu. Robisz dokładnie tak, jak podałem wyżej przykładowy kod.
    W obu wypadkach musisz pamiętać o umiejscowieniu bibliotek w tym samym miejscu, co plik exe, albo odpowiednim podaniu ścieżek d projekcie.
    Z pliku .h tak czy siak będziesz korzystał, żeby poznać nazwy dostępnych w bibliotece funkcji oraz ich argumentów wejściowych i wyjściowych.
    W moim odczuciu dynamiczne łączenie jest mniej kłopotliwe.
REKLAMA