<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<div class="moz-cite-prefix">Najdete si a docasne zapnete prepinac,
ktery bude nechavat soubory, ktere vznikly po pruchodu
preprocesorem - tam pak jasne uvidite, jak se vam rozvijeji makra
a defines a co tedy ve skutecnosti vidi komplikator na tom radku.
(tusim /P /Fa)<br>
J.<br>
<br>
</div>
<div class="moz-cite-prefix">On 15.02.2022 17:35, Pavel HudeÄŤek
wrote:<br>
</div>
<blockquote type="cite"
cite="mid:e9790267-7ddc-1ff6-c67f-a92e5affef04@seznam.cz">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
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.<br>
<br>
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.<br>
<br>
Teď teda co je za problém ve VS při při 64b, s funkcemi
deklarovanými:<br>
<font face="Courier New, Courier, monospace">#define PXCAPI extern
"C" __attribute__ ((visibility("default")))<br>
PXCAPI int pxcInitialize(int argc = 0, char const* argv[] =
NULL);<br>
</font><br>
error:<br>
Severity   Code   Description   Project   File   Line  Â
Suppression State<br>
Error (active)Â Â Â E0260Â Â Â explicit type is missing ('int'
assumed)Â Â Â prjTest4Â Â Â C:\Users\hudecekp\Documents\Visual Studio
2017\Projects\sdk-test\prjTest4\pxcapi.h   140   <br>
ukazujĂcĂ na začátek řádku, tedy pĹ™ed PXCAPI<br>
a dalšà error:<br>
Severity   Code   Description   Project   File   Line  Â
Suppression State<br>
Error (active)Â Â Â E0065Â Â Â expected a ';'Â Â Â prjTest4Â Â Â
C:\Users\hudecekp\Documents\Visual Studio
2017\Projects\sdk-test\prjTest4\pxcapi.h   140   <br>
ukazujĂcĂ pĹ™ed int.<br>
<br>
PH<br>
<br>
<div class="moz-cite-prefix">Dne 15.02.2022 v 16:57 Miroslav Ĺ inko
napsal(a):<br>
</div>
<blockquote type="cite"
cite="mid:CAAo4E4izS+WeZ3WP6D8ZtahMzqkKzznPOP2MKVRLR1gX6igALw@mail.gmail.com">
<pre class="moz-quote-pre" wrap="">64bit verzia neviem, ale pri 32bit sa funkcie do dll kompiluju s prototypom
__declspec(dllexport)
A tie iste funkcie pre exe s
__declspec(dllimport)
T.j. v headri by som ocakaval nieco taketo:
#ifdef NAME_EXPORTS //defined for DLL, not for exe
#define NAME_API __declspec(dllexport)
#else
#define NAME_API __declspec(dllimport)
#endif
Linker error pise unresolved external len meno funkcie, alebo je tam
pred menom funkcie import prefix?
__imp_?meno_funkcie
Ak tam nie je __imp_, tak vam ten __declspec(dllimport) chyba a linker
nenajde funkcie v import libke.
miro
ut 15. 2. 2022 o 16:25 Pavel HudeÄŤek <a class="moz-txt-link-rfc2396E" href="mailto:edizon@seznam.cz" moz-do-not-send="true"><edizon@seznam.cz></a> napĂsal(a):
</pre>
<blockquote type="cite">
<pre class="moz-quote-pre" wrap="">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.
</pre>
</blockquote>
</blockquote>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<pre class="moz-quote-pre" wrap="">_______________________________________________
HW-list mailing list - sponsored by <a class="moz-txt-link-abbreviated" href="http://www.HW.cz">www.HW.cz</a>
<a class="moz-txt-link-abbreviated" href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a>
<a class="moz-txt-link-freetext" href="http://list.hw.cz/mailman/listinfo/hw-list">http://list.hw.cz/mailman/listinfo/hw-list</a>
</pre>
</blockquote>
<p><br>
</p>
<pre class="moz-signature" cols="72">--
Jindroush <a class="moz-txt-link-rfc2396E" href="mailto:jindroush@seznam.cz"><jindroush@seznam.cz></a></pre>
</body>
</html>