Re: Problémy s DLL a LIB ve VS2017

Pavel Hudeček edizon na seznam.cz
Úterý Únor 15 16:24:32 CET 2022


No všechny soubory, tedy zdroják pokusného programu, H, DLL a LIB jsou v 
obou případech stejné, ale s cmake (který používá VS) to funguje, kdežto 
z přímo ve VS ne.

A ten cmake se pouští z bat:
*mkdir build
cd build
cmake -DCMAKE_GENERATOR_PLATFORM=x64 ..
msbuild /P:Configuration=Release ALL_BUILD.vcxproj*
(a pak copy exe a DLL na místo kde se to spouští)

Jo a pak jsem v tom VS zapnul x64, prvně jsem si nevšim že je zaplý x86.

Výsledkem jsou jiný errory:
Severity    Code    Description    Project    File    Line Suppression State
Error (active)    E0260    explicit type is missing ('int' assumed)
A ty errory se odkazujou na všechny začátky deklarací funkcí v pxcapi.h

Všechny jsou tohoto typu:
PXCAPI int pxcRefreshDevices();
a liší se až názvy a parametry
přičemž nahoře je:
#ifndef WIN32
     #define PXCAPI extern "C" __attribute__ ((visibility("default")))
#else
     #define PXCAPI extern "C" __declspec(dllexport)
#endif

PH

Dne 15.02.2022 v 16:03 Jindroush napsal(a):
> No a ten unresolved symbol v pxcore.lib urcite je, tj. presne ve 
> stejnem tvaru, na ktery si linker stezuje?
> J.
>
> On 15.02.2022 15:53, Pavel Hudeček wrote:
>> Dobrý den všem,
>> mám konzolový program v C, který využívá DLL a LIB. Pro začátek by mi 
>> stačilo, kdyby to fungovalo v triviální verzi, kdy je DLL a LIB u 
>> zdrojáků.
>>
>> Pokud použiju cmake, funguje mi tento CMakeList.txt:
>>
>> *cmake_minimum_required(VERSION 3.10) **
>> **project(widepix2fd) **
>> **add_library(pxcore SHARED IMPORTED) **
>> **set_property(TARGET pxcore PROPERTY IMPORTED_LOCATION 
>> "${CMAKE_SOURCE_DIR}/pxcore.dll") **
>> **set_property(TARGET pxcore PROPERTY IMPORTED_IMPLIB 
>> "${CMAKE_SOURCE_DIR}/pxcore.lib") **
>> **add_library(wpxTest.dll SHARED widepix2fd.cpp) **
>> **target_link_libraries(widepix2fd pxcore) **
>> ***
>> Jenže já bych to potřeboval rozchodit ve VS2017. Ale nedaří se mi v 
>> nastavení projektu zařídit, aby to fungovalo.
>> V nastavení projektu All configurations / All Platforms jsem nastavil:
>> Linker/Input/Additional Dependencies jsem přidal pxcore.lib
>> Build Events/Post-Build Event/Command line jsem dal xcopy /y /d 
>> "*.dll" "$(OutDir)"
>>
>> Dostal jsem se do stavu, kdy to dělá errory LNK2001 unresolved 
>> external symbol a za tím název funkce doplněný o podtřžítko.
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20220215/af13dfc2/attachment.htm>


Další informace o konferenci Hw-list