Re: Problémy s DLL a LIB ve VS2017

Pavel Hudeček edizon na seznam.cz
Úterý Únor 15 18:13:38 CET 2022


Díky, to je zajímavá stopa. Když jsem místo toho použil:
#define PXCAPI extern "C"
nebo
#define PXCAPI extern "C" __declspec(dllimport)

Proběhne debug build bez problémů.

Zajímavé je, že ale v obou případech release skončí errorama typu:
Severity    Code    Description    Project    File    Line Suppression State
Error    LNK2001    unresolved external symbol __imp_pxcInitialize    
prjTest4 C:\Users\hudecekp\Documents\Visual Studio 
2017\Projects\sdk-test\prjTest4\prjTest4.obj    1

(Původní verze v qt funguje vždy a oběma způsoby)

Takže v nastavení projektu VS se musí nějak říct, že má umět __attribute__

PH

Dne 15.02.2022 v 17:45 Miroslav Šinko napsal(a):
> MSVC2017, ani cmake nepouzivam, no __attribute__ mi pripada, ze je zo
> sveta GCC a nie MSVC.
>
> Ten prvy error hovori, ze vam chyba typ (navratovy) pre funkciu:
> PXCAPI int pxcInitialize(int argc = 0, char const* argv[] = NULL);
> Ono ho tam mate, ale po rozvoji PXCAPI:
> extern "C" __attribute__ ((visibility("default"))) int
> pxcInitialize(int argc = 0, char const* argv[] = NULL);
> kompilatoru podla mna nejde do hlavy __attribute__
>
> miro
>
> ut 15. 2. 2022 o 17:35 Pavel Hudeček<edizon na seznam.cz>  napísal(a):
>
>> No on ten #if pro win32 bude artefakt z dávné doby, teď se to buildí jen v 64b a mnou používané DLL je 64b, takže momentálně nemá smysl se zabývat tím co vzniklo, když jsem omylem buildil 32b.
>>
>> A důležité je, že stejné fajly C, H, DLL a LIB fungují při použití Cmake a též fungují při použití v QT, jen s přidáním LIB do projektu a tam fungují při všech metodách překladu, tedy cmake/VS, qmake/VS i mingw. Tzn. všechny 4 fajly jsou v pořádku, jen není správně nastaven projekt ve VS.
>>
>> Teď teda co je za problém ve VS při při 64b, s funkcemi deklarovanými:
>> #define PXCAPI extern "C" __attribute__ ((visibility("default")))
>> PXCAPI int pxcInitialize(int argc = 0, char const* argv[] = NULL);
>>
>> error:
>> Severity    Code    Description    Project    File    Line    Suppression State
>> Error (active)    E0260    explicit type is missing ('int' assumed)    prjTest4    C:\Users\hudecekp\Documents\Visual Studio 2017\Projects\sdk-test\prjTest4\pxcapi.h    140
>> ukazující na začátek řádku, tedy před PXCAPI
>> a další error:
>> Severity    Code    Description    Project    File    Line    Suppression State
>> Error (active)    E0065    expected a ';'    prjTest4    C:\Users\hudecekp\Documents\Visual Studio 2017\Projects\sdk-test\prjTest4\pxcapi.h    140
>> ukazující před int.
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20220215/809385e6/attachment-0001.htm>


Další informace o konferenci Hw-list