Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [MinGW] Mehrere DLLs zu einer linken (https://www.delphipraxis.net/117505-%5Bmingw%5D-mehrere-dlls-zu-einer-linken.html)

Nils_13 19. Jul 2008 10:36


[MinGW] Mehrere DLLs zu einer linken
 
Hi,

wie kann man mit MinGW mehrere DLLs zu einer einzigen linken ? Ich besitze 12 und möchte diese zur besseren Bedienung und Übersicht in einer haben. Es handelt sich genaugenommen um die Kompilierung von FFMpeg, Ziel ist es eine Shared-Library zu bekommen, ich habe aber derzeit 12.

new32 19. Jul 2008 12:52

Re: [MinGW] Mehrere DLLs zu einer linken
 
du müsstest etwas am makefile ändern und die ganzen Objektdateien zu einer dll linken.
(man gcc und man ld helfen dir dabei)

uU. musst du noch nen bisschen was in den Dateien ändern um doppelte Funktionsnamen zu verhindern und ggf. die DllMain-Funktionen der einzelnen dlls zu einer machen.

Code:
gcc x.o y.o -shared -oall_in_one.dll -lwldap32 -lws2_32 -lwinmm ...
wies mit der Lizenz aussieht weiß ich nich. Ich glaube wenn du was an nem lgpl-Programm änderst musst du die Änderungen als lgpl veröffentlichen.

smallsmoker 19. Jul 2008 13:22

Re: [MinGW] Mehrere DLLs zu einer linken
 
vieleicht hilft dir das weiter:
BeRo DLL Linker Compressor
mfg smallsmoker

Nils_13 19. Jul 2008 16:12

Re: [MinGW] Mehrere DLLs zu einer linken
 
Danke new32.
Der Compressor ist ein Virus.

Assertor 19. Jul 2008 16:37

Re: [MinGW] Mehrere DLLs zu einer linken
 
Zitat:

Zitat von Nils_13
Der Compressor ist ein Virus.

Sicher? Auf der Seite sind haufenweise hinweise zu False-Positives. Das selbe Problem hat ja auch InnoSetup, weil irgendwelche ****** meinen, damit Trojaner verteilen zu müssen...

Gruß Assertor

Nils_13 19. Jul 2008 20:49

Re: [MinGW] Mehrere DLLs zu einer linken
 
Hat jemand eine Idee, was hier schiefgeht ? Es scheint eine Bibliothek zu fehlen. Aber welche ? Es kann gut sein, dass die Bibliothek trotz Installation von ein paar Zusatzpaketen fehlt, aber ich sehe kein weiteres Paket mehr, welches man noch installieren könnte. Hier alle Fehler, dass es sich um Netzwerkprobleme handelt sieht man sofort. Ein --disable-ffserver bringt beim configure übrigens nichts.
Zitat:

gcc -shared -o video.dll video.o lib/libavformat.a lib/libavcodec.a lib/libavutil.a -lm
lib/libavformat.a(rtsp.o): In function `udp_read_packet':
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/rtsp.c:1194: undefined reference to `_select@20'
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/rtsp.c:1199: undefined reference to `___WSAFDIsSet@8'
lib/libavformat.a(rtsp.o): In function `rtsp_parse_transport':
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/rtsp.c:672: undefined reference to `_ntohl@4'
lib/libavformat.a(rtsp.o): In function `make_setup_request':
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/rtsp.c:975: undefined reference to `_htonl@4'
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/rtsp.c:976: undefined reference to `_inet_ntoa@4'
lib/libavformat.a(rtsp.o): In function `sdp_read_header':
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/rtsp.c:1416: undefined reference to `_inet_ntoa@4'
lib/libavformat.a(rtpproto.o): In function `rtp_read':
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/rtpproto.c:214: undefined reference to `_select@20'
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/rtpproto.c:217: undefined reference to `___WSAFDIsSet@8'
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/rtpproto.c:232: undefined reference to `_recvfrom@24'
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/rtpproto.c:235: undefined reference to `_WSAGetLastError@0'
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/rtpproto.c:235: undefined reference to `_WSAGetLastError@0'
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/rtpproto.c:230: undefined reference to `___WSAFDIsSet@8'
lib/libavformat.a(tcp.o): In function `tcp_close':
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/tcp.c:181: undefined reference to `_closesocket@4'
lib/libavformat.a(tcp.o): In function `ff_network_close':
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/network.h:60: undefined reference to `_WSACleanup@0'
lib/libavformat.a(tcp.o): In function `tcp_write':
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/tcp.c:160: undefined reference to `_select@20'
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/tcp.c:161: undefined reference to `___WSAFDIsSet@8'
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/tcp.c:162: undefined reference to `_send@16'
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/tcp.c:164: undefined reference to `_WSAGetLastError@0'
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/tcp.c:164: undefined reference to `_WSAGetLastError@0'
lib/libavformat.a(tcp.o): In function `tcp_read':
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/tcp.c:130: undefined reference to `_select@20'
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/tcp.c:131: undefined reference to `___WSAFDIsSet@8'
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/tcp.c:132: undefined reference to `_recv@16'
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/tcp.c:134: undefined reference to `_WSAGetLastError@0'
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/tcp.c:134: undefined reference to `_WSAGetLastError@0'
lib/libavformat.a(tcp.o): In function `tcp_open':
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/tcp.c:110: undefined reference to `_closesocket@4'
lib/libavformat.a(tcp.o): In function `ff_network_init':
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/network.h:51: undefined reference to `_WSAStartup@8'
lib/libavformat.a(tcp.o): In function `tcp_open':
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/tcp.c:62: undefined reference to `_htons@4'
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/tcp.c:66: undefined reference to `_socket@12'
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/tcp.c:75: undefined reference to `_WSAGetLastError@0'
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/tcp.c:72: undefined reference to `_connect@12'
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/tcp.c:77: undefined reference to `_WSAGetLastError@0'
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/tcp.c:77: undefined reference to `_WSAGetLastError@0'
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/tcp.c:92: undefined reference to `_select@20'
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/tcp.c:93: undefined reference to `___WSAFDIsSet@8'
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/tcp.c:99: undefined reference to `_getsockopt@20'
lib/libavformat.a(udp.o): In function `udp_leave_multicast_group':
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/udp.c:115: undefined reference to `_setsockopt@20'
lib/libavformat.a(udp.o): In function `udp_close':
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/udp.c:483: undefined reference to `_closesocket@4'
lib/libavformat.a(udp.o): In function `ff_network_close':
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/network.h:60: undefined reference to `_WSACleanup@0'
lib/libavformat.a(udp.o): In function `udp_write':
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/udp.c:467: undefined reference to `_WSAGetLastError@0'
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/udp.c:463: undefined reference to `_sendto@24'
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/udp.c:467: undefined reference to `_WSAGetLastError@0'
lib/libavformat.a(udp.o): In function `udp_read':
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/udp.c:447: undefined reference to `_WSAGetLastError@0'
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/udp.c:445: undefined reference to `_recv@16'
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/udp.c:447: undefined reference to `_WSAGetLastError@0'
lib/libavformat.a(udp.o): In function `udp_set_url':
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/udp.c:241: undefined reference to `_htons@4'
lib/libavformat.a(udp.o): In function `is_multicast_address':
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/udp.c:248: undefined reference to `_ntohl@4'
lib/libavformat.a(udp.o): In function `udp_set_url':
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/udp.c:241: undefined reference to `_htons@4'
lib/libavformat.a(udp.o): In function `is_multicast_address':
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/udp.c:248: undefined reference to `_ntohl@4'
lib/libavformat.a(udp.o): In function `ff_network_init':
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/network.h:51: undefined reference to `_WSAStartup@8'
lib/libavformat.a(udp.o): In function `udp_socket_create':
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/udp.c:255: undefined reference to `_socket@12'
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/udp.c:260: undefined reference to `_htonl@4'
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/udp.c:261: undefined reference to `_htons@4'
lib/libavformat.a(udp.o): In function `udp_open':
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/udp.c:393: undefined reference to `_setsockopt@20'
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/udp.c:397: undefined reference to `_bind@12'
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/udp.c:401: undefined reference to `_getsockname@12'
lib/libavformat.a(udp.o): In function `udp_port':
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/udp.c:269: undefined reference to `_ntohs@4'
lib/libavformat.a(udp.o): In function `udp_set_multicast_ttl':
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/udp.c:63: undefined reference to `_setsockopt@20'
lib/libavformat.a(udp.o): In function `udp_open':
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/udp.c:434: undefined reference to `_closesocket@4'
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/udp.c:419: undefined reference to `_setsockopt@20'
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/udp.c:427: undefined reference to `_setsockopt@20'
lib/libavformat.a(udp.o): In function `udp_join_multicast_group':
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/udp.c:87: undefined reference to `_setsockopt@20'
lib/libavformat.a(rtpdec.o): In function `rtp_parse_open':
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/rtpdec.c:311: undefined reference to `_gethostname@8'
lib/libavformat.a(os_support.o): In function `ff_socket_nonblock':
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/os_support.c:75: undefined reference to `_ioctlsocket@12'
lib/libavformat.a(os_support.o): In function `resolve_host':
e:\Eigene Projekte\Dark Player\video\C\ffmpeg/libavformat/os_support.c:64: undefined reference to `_gethostbyname@4'
collect2: ld returned 1 exit status
make: *** [video] Error 1

new32 19. Jul 2008 20:57

Re: [MinGW] Mehrere DLLs zu einer linken
 
PSDK sagt zu "setsockopt" "Ws2_32.lib"

p0w3r5tr34m3r 19. Jul 2008 21:05

Re: [MinGW] Mehrere DLLs zu einer linken
 
sind alles socket - funktionen.. Binde also noch Winsock2 ("[...] -lws2_32 [...]") mit in den cmd und es sollte passen :-)

Nils_13 19. Jul 2008 21:08

Re: [MinGW] Mehrere DLLs zu einer linken
 
Passt leider immernoch nicht. :(

smallsmoker 19. Jul 2008 21:25

Re: [MinGW] Mehrere DLLs zu einer linken
 
Zitat:

Zitat von Assertor
Zitat:

Zitat von Nils_13
Der Compressor ist ein Virus.

Sicher? Auf der Seite sind haufenweise hinweise zu False-Positives. Das selbe Problem hat ja auch InnoSetup, weil irgendwelche ****** meinen, damit Trojaner verteilen zu müssen...

Gruß Assertor

richtig :) auch der beroexepacker wird leider als virud erkannt ... danke script kiddies ...
dabei hatt er viel bessere pack ratios als UPX !
exe ohne: ~700 kb
UPX: ~350kb
bep: ~300 kb

mfg smallsmoker


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:50 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz