Pytanie Referencje DLL w Visual C ++


Mam doświadczenie w C ++, ale nie MSVC.

Co próbuję zrobić to włączenie .dll z projektu open source do mojego projektu. Kod jest dostępny i go zbudowałem. Mam plik .dll oraz .lib, który jak rozumiem, jest wymagany dla projektów C ++.

Teraz niestety nie ma prostego "Dodaj odniesienia", wrzuć mój plik .dll do katalogu włączeń i dodaj to do mojego rozwiązania. Dokonałem edycji stron właściwości projektu, opcji dodawania katalogów dodatkowych C / C ++ oraz dodania .lib jako dodatkowej zależności linkera. Stworzyłem katalog include dla bibliotek dll i lib w moim drzewie rozwiązań.

Mój problem polega na tym, że próbuję dołączyć pliki nagłówkowe z dokumentacji, wyjście VS wypowiada komunikaty o błędach. Teraz zdaję sobie sprawę, że używam komendy dll / lib i że pliki .h nie są obecne w moim rozwiązaniu, więc jak dodać odpowiednie załączniki? Używam również QT toolkit, który działa, ale unikam dodawania innego nagłówka / biblioteki DLL z biblioteki Open Source.

Czy ktoś może wskazać mi właściwy kierunek.


38
2018-05-01 02:22


pochodzenie


Mówisz "wyjście VS wypluwa komunikaty o błędach", ale musimy wiedzieć, co to było, aby to naprawić. - GManNickG
Mam moje pliki .cpp i .h w Solution / src. Plik .dll / lib znajduje się w Solution / include. Dodałem rozwiązanie / dołączyć do "Linkera -> dodatkowych katalogów bibliotecznych" i "C / C ++ -> dodatkowych katalogów". Nagłówek, którego potrzebuję, to QTwitLib.h z biblioteki TwitLib. #Include "QTwitLib.h" lub nawet ../ lub include / QTwitLib.h wszystko mi "błąd krytyczny: Nie mogę otworzyć pliku include: Brak takiego pliku". - Mark Stahler
Nie można nie zastanawiać się, jaki jest sens tworzenia (i zatwierdzania) banalnej, niekonsekwentnej edycji do postu w wieku ponad 7 lat. - dxiv


Odpowiedzi:


Aby korzystać z biblioteki, musisz wykonać kilka czynności:

  1. Upewnij się, że masz pliki * .lib i * .dll z biblioteki, której chcesz użyć. Jeśli nie masz * .lib, pomiń # 2

  2. Umieść odwołanie do * .lib w projekcie. Kliknij prawym przyciskiem myszy nazwę projektu w Eksploratorze rozwiązań, a następnie wybierz Właściwości konfiguracji-> Łącznik-> Wprowadź i umieść nazwę biblioteki we właściwości Dodatkowe zależności.

  3. Musisz upewnić się, że VS może znaleźć właśnie dodaną bibliotekę, musisz więc przejść do menu Narzędzia i wybrać Opcje ... Następnie w obszarze Projekty i rozwiązania wybrać Katalogi VC ++, edytować opcję Katalog bibliotek. Tutaj możesz ustawić katalog zawierający twoją nową bibliotekę, wybierając "Pliki bibliotek" w rozwijanym menu "Pokaż katalogi dla:". Wystarczy dodać ścieżkę do pliku lib na liście katalogów. Jeśli nie masz lib możesz to pominąć, ale podczas gdy tutaj będziesz musiał również ustawić katalog, który zawiera twoje pliki nagłówkowe, również w "Uwzględnij pliki". Zrób to w ten sam sposób, w jaki dodałeś bibliotekę.

Po wykonaniu tej czynności powinieneś być gotowy do korzystania z biblioteki. Jeśli nie masz pliku lib, możesz nadal używać biblioteki dll, importując ją samodzielnie. Podczas uruchamiania aplikacji można jawnie załadować bibliotekę dll, wywołując funkcję LoadLibrary (patrz: http://msdn.microsoft.com/en-us/library/ms684175(VS.85).aspx po więcej informacji)

Twoje zdrowie!

EDYTOWAĆ

Pamiętaj, aby użyć #include <Foo.h> w przeciwieństwie do #include "foo.h". Ten pierwszy przeszukuje ścieżkę dołączania. Ten ostatni używa lokalnych plików projektu.


73
2018-05-01 03:48



Doskonała odpowiedź. Chciałem tylko dodać aktualizację: w VS 2010 krok 3 został nieco zmieniony; teraz kliknij prawym przyciskiem myszy swój projekt w Eksploratorze rozwiązań, wybierz Właściwości, a następnie przejdź do Właściwości konfiguracji> Katalogi VC ++. - Nate C-K
Popraw mnie, jeśli się mylę, ale myślę, że musimy również upewnić się, że pliki .dll można znaleźć w czasie wykonywania. Łatwym sposobem na to jest skopiowanie plików .dll do tego samego katalogu, co plik .exe dla tego rozwiązania. Zobacz tutaj, aby uzyskać więcej informacji. - littleO
Próbowałem to zrobić w VS 2013 i nie znajduję sposobu na wykonanie kroku 3. - STF
Krok 3 może być nieważny od VS 2010. "Polecenia VC ++ są teraz dostępne jako arkusz właściwości użytkownika, który jest domyślnie dodawany do wszystkich projektów". - BillJam


Dodatkowe katalogi zawierają katalog projektu w reż. Zwykle jest to katalog, w którym znajduje się plik projektu, * .vcproj. Przypuszczam, że w twoim przypadku musisz dodać "dołącz" do swoich katalogów dołączania i bibliotek.

Jeśli chcesz mieć pewność co to jest katalog projektu, możesz sprawdzić wartość makra $ (ProjectDir). Aby to zrobić przejdź do "C / C ++ -> Additional Include Directories", naciśnij przycisk "..." iw wyskakującym okienku kliknij "Makra >>".


2
2018-05-01 03:50





Wspomniałeś o dodaniu dodatkowego katalogu include (C / C ++ | General) i dodatkowej zależności lib (Linker | Input), ale czy dodałeś także dodatkowy katalog biblioteki (Linker | General)?

Dołączenie przykładowego komunikatu o błędzie może również pomóc ludziom w udzieleniu odpowiedzi na pytanie, ponieważ nie jest nawet jasne, czy błąd występuje podczas kompilacji czy łączenia.


1
2018-05-01 02:46