QtCreator VS2019 problem z LNK2019: unresolved external symbol - DLL x32

0

Witam,
Pod QtCreatorem próbuję zlinkować biblotekę .dll, ale dostaję taki błąd:

LNK2019: unresolved external symbol "__declspec(dllimport) int __cdecl AMDVB_GetReceiverMode(enum AMDVB_RECEIVER_MODE *)" (__imp_?AMDVB_GetReceiverMode@@YAHPEAW4AMDVB_RECEIVER_MODE@@@Z) referenced in function "public: __cdecl AMCfgTest::AMCfgTest(class QWidget *)" (??0AMCfgTest@@QEAA@PEAVQWidget@@@Z)

Biblioteka dll skompilowana w VS2010 x32,

System Windows 10 x64 Pro
zainstalowane VS 2019 Community
Wersja Qt: 5.15.2\msvc2019_64

Co może być powodem błędu? Brak kompatybilności między x32 i x64? Problemem jest sposób importowania: __declspec(dllimport) int __cdecl ?
Dziękuję za pomoc.

PS: posiadam plik nagłówkowy .h, .dll oraz plik .tlb

1

Jeżeli DLLka to 32 bity a kompilujesz da 64 to wprost, wg mojej wiedzy, tego nie zlinkujesz.

0

Problem niekompatybilności bibliotek prawdopodobnie spowodował by błąd linkowania LNK2001. Sprawdź jaki z powodów może powodować tą sytuację.

0
zibicoder napisał(a):

Co może być powodem błędu? Brak kompatybilności między x32 i x64? Problemem jest sposób importowania: __declspec(dllimport) int __cdecl ?

Nie można mieszać w ramach jednego procesu kodu 32- i 64-bitowego, czy to wlinkowując statyczną libkę, czy to ładując dll-kę statycznie albo dynamicznie.
To nie będzie działać. Wszystko musi być 32-bitowe albo wszystko 64-bitowe.

Jeśli bardzo, bardzo potrzebujesz to obejść to możesz utworzyć 32-bitowego pomocniczego exeka którego zadaniem będzie załadować dll-kę i potem komunikować się z tym procesem dowolnym dozwolonym sposobem, ale znacznie łatwiej byłoby znaleźć/przekompilować dll-kę na 64 bity a jeśli to niemożliwe to kompilować wszystko w 32 bitach (i używać 32-bitowego Qt).

0

Dziękuję za tak szybką reakcję, Panowie.
Trochę podłubałem i wygląda na to że problemem jest kompatybilność platform x32 vs x64.
(zrobiłem test w VS 2019 x32 i ruszyło)
Mam kody źródłowe tej dll. Powalczę z adaptacją na x64 albo pozostaje "przeszczep" x32 jak sugeruje @Azarien.
@ _13th_Dragon: zkubiński ??? - nie znam człowieka, ja to "domorosły" progarmmer, hobbysta, w zaawansowanym wieku... Jeżeli coś dłubię, to tylko dla własnej satysfakcji..., ale pozdrowienia dla @ zkubiński..., i dla @_13th_Dragon
Jeszcze raz dzięki za odp[owiedzi.
Udanego Weekendu ;)
PS: a są może jakieś "trick'i" na połączenie x32 z x64? (ot takie naiwne pytanie...)

0

No tak jak @Azarien napisał: robisz exeka 32b który linkuje się do tej libki i gadasz z nim przez jakieś IPC. Sam musisz sobie odpowiedzieć czy prościej DLLa przekompilować czy robić takie sztuki ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1