Portál AbcLinuxu, 15. května 2025 15:12
Narazil som na problém, ktorý sa dá zredukovať na nasledovné:
Súbor test.c vyzerá takto:__declspec( dllimport ) void foo(void); __declspec( dllexport ) void bar(void) { foo(); }
C:\w\test>gcc -m64 -c test.c -o test.o C:\w\test>gcc -shared -o Test.dll test.o test.o:test.c:(.text+0xb): undefined reference to `__imp_foo' collect2.exe: error: ld returned 1 exit statusCieľom je vyrobiť dynamickú knižnicu, ktorá bude použitá v nejakej aplikácii pričom tá aplikácia použije ešte ďalšiu knižnicu implementujúcu funkciu foo(). Na Linuxe s tým nie je problém. Na windowsoch s MinGW a gcc kompilátorom dostanem chybovú hlášku. Dá sa s tým niečo spraviť?
Skrátka na windowsoch pri linkovaní tej knižnice linker musí mať informáciu, kde sa ten symbol má hladat pri runtime.Neviem ako to je presne na win, ale v Linuxe to neplati. Nemusis vediet. Kukni sekciu EXAMPLE v manualovej stranke dlopen.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.