Windows-DLL unter Linux erstellen
-
HI Leute, ich habe ein wüstes Vorhaben:
Ich möchte ein C++-Programm unter Linux so compilieren, das eine dll entsteht, die auch unter Windows funktioniert. Geht das? Und wenn ja, wie? Bin dankbar für Tips aller Art! Ach ja: Ich benutze SuSe-Linux und den gnu-C++ Compiler.
Danke.
-
Hi,
das ist nicht moeglich, da auf beiden Platformen unterschiedlicher Code
generiert wird. Ausserdem kennt Linux keine DLLsmfg
v R
-
doch für Linux gibt es DLLs, ich weiss nur nicht ob die generell Windows kompatibel sind vom Aufbau, der Code ist auf jeden Fall Systemabhängig (außer ein bissel Assembler Code wie i+=1 zb)
siehe dlltool(1)
-
Was ist mit den Win32-Codecs für MPlayer?
Das sind doch "richtige" Dlls oder?
Wie kann der MPlayer eigentlich was damit anfangen?
-
Nein sind es nicht. Fuer den Codec ist eine extra api geschrieben worden, um
die DLLs zu benutzen (siehe auch wine).Also ich kenne unter Linux/Unix lediglich .so, aber keine .dll-Dateien
mfg
v R
-
virtuell Realisticer
Die Dateiendung besagt nichts über den INhalt aus.
MS sagt DLL und bei Linux nent man sie *.so *.a.
Du kannst die aber auch *.lib oder *.dll nennen wenn du beim Linken den namen angibst.-L/usr/lib -leigene
verwendet aber *.a *.so
-
Jo, aber mit kleiner Wahrscheinlichkeit, wird eine unter Linux/Unix erstellte
"DLL" nicht unter Windows lauffaehig sein.Kann ich mir zumindest nicht vorstellen.
mfg
v R
-
@ virtuell Realisticer
Was meinst du wohl, wie der VideoLAN Client kompiliert wird?
Die primäre Entwicklungsplattform ist Linux. Und zumindest bis zur Version 0.4 wurde die Windows Version des VLC auf einem Linux Rechner kompiliert. Das geht natürlich nicht mit dem normalen GCC wie er z.B. bei SuSE, RedHat, Debian, etc. per default installiert wird. Sondern man muss den GCC als Crosscompiler für Windows installieren und auch die benötigten Programmteile (GTK) für Windows Crosscompilieren.
siehe http://developers.videolan.org/vlc/doc/win32/Cross-Compile-Howto.txt
-
Original erstellt von <Linux-Fan>:
**HI Leute, ich habe ein wüstes Vorhaben:Ich möchte ein C++-Programm unter Linux so compilieren, das eine dll entsteht, die auch unter Windows funktioniert. Geht das? Und wenn ja, wie? Bin dankbar für Tips aller Art! Ach ja: Ich benutze SuSe-Linux und den gnu-C++ Compiler.
Danke.**
*EINE* Bibliothek, die mit *EINMAL* kompilieren auf mehr als einem Betriebssystem (Linux + Windows) lauffähig ist kannst du nicht erstellen.
Eine Bibliothek (Shared Library oder DLL) ist immer abhängig vom verwendeten Betriebssystem. Eine native Linux Bibliothek wird unter Solaris, HP-UX, *BSD, Windows, MacOS X, etc. nicht oder nur mit Hilfe eines Linux Emulation Layer (wenn überhaupt, dann aber auch nur wenn die Hardwareplattform gleich bleibt) funktionieren.
Selbst wenn man die Betriebssystemunterschiede ausser acht lässt, bleibt noch das unterschiedliche Dateiformat. Das unter Linux und Unix verwendete ELF Binärformat ist AFAIK überhaupt nicht kompatibel mit dem unter Windows verwendeten PE Binärformat.
Dir bleibt allerdings die Möglichkeit, die Bibliothek unter Linux zu entwickeln und dann für Windows zu crosscompilieren (siehe hierzu mein obiges Posting bezüglich VLC).
-
Jo, an Cross-Compiling hab ich gar nicht gedacht
mfg
v R