Witam znowu,
Miałem nadzieję coraz rzadziej zakładać tutaj tematy, no ale jednak..
Mam dziwny problem który dotyczy linkowania (albo i nie?) bibliotek DLL.
Podczas wywoływania funkcji z dll, program kompiluje się bez błędów i ostrzeżeń. Sam program po uruchomieniu również działa poprawnie.
Problem zaczyna się gdy chcę zadeklarować obiekt klasy znajdującej się w DLL. Podczas kompilacji wywala mi błąd konsolidatora 2019:
https://msdn.microsoft.com/pl-pl/library/799kze2z.aspxa konkretniej:
Error LNK2019 unresolved external symbol "__declspec(dllimport) public: __thiscall class_test::class_test(void)" (__imp_??0class_test@@QAE@XZ) referenced in function _WinMain@16 Framework C:\Users\Sztywny\Desktop\System_framework\System_FrameWork\Framework\test.obj
Co jest cholernie dziwne, bo bibliotekę dołączam poprawnie, tzn:
Project -> Configuration Proporties -> C/C++ -> General -> Additional Include Directories -> (ścieżka do headera DLL)
Project -> Configuration Proporties -> Linker -> General -> Additional Library Directories -> (ścieżka do wygenerowanego pliku .lib oraz .dll)
Project -> Configuration Proporties -> Linker -> Input -> Additional Dependencies -> dll_library.lib
Oczywiście nie zapominam o #include "dll.hpp" w pliku używajacym biblioteki..
Tak więc linkowanie do projektu odpada (chyba).
W ostatnim akapicie tego artykułu
http://cpp0x.pl/kursy/Kurs-WinAPI-C++/Zaawansowane/DLL/198,
który został rozszerzony w tym wątku:
http://cpp0x.pl/forum/temat/?id=3486&p=2jest napisane, że zamiana metod klasy umieszczonej w dll, na metody wirtualne załatwia sprawę. Niestety nie u mnie.
Ciągle występuje błąd 2019
W innych tematach jest sugerowane, że może to być wina źle postawionych lub w ogóle braku header guards. Jednak i to można wykluczyć, ponieważ tutaj nie przewiduję błędu.
Dodam również, że podobne błąd występował gdy chciałem po prostu zalinkować headery z bliblioteki inih do mojego projektu:
https://github.com/benhoyt/inihJednak to są same pliki h/hpp a nie pliki .a/.lib/.dll
Myślę, że nie ma sensu dodawać kodu źródłowego, ponieważ schemat jest analogiczny jak w przypadku tematów, do których linkuję wyżej.
Serdecznie pozdrawiam i proszę o pomoc, bo siedzę nad tym już od kilku dobrych godzin i nic nie mogę poradzić w tej sprawie.
EDIT:
Zauważyłem, że co kilka prób kompilacji, nie wywala błedu 2019 tylko błąd LNK 1104, czyli, że nie może znaleźć pliku liba:
https://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k%28LNK1104%29&rd=true
Dzieje się tak również kiedy dam Clean Solution a następnie build solution, albo połączenie obu tych opcji czyli Rebuild Solution.
Ehh.. już sam kurwa nie wiem co do czego...