Andreas Rozek Lesehinweise letzte Änderungen Gästebuch-Eintrag Mitteilungen an den Autor  English Version  zur Leitseite zum vorherigen Thema zum nächsten Thema  zur ersten Seite zur vorherigen Seite zur nächsten Seite

Distributionen für Win32-Plattformen

Nachdem weder eine Recherche im Internet noch eine Anfrage im Lua-Forum den erhofften Erfolg brachte, blieb dem Autor nichts anderes übrig, als die gewünschte TkLua-Distribution für Win32-Plattformen selbst zusammenzustellen.

Die vorliegende Web-Seite beschreibt die Arbeiten des Autors im Hinblick auf Win32-Distributionen von Lua/LuaC 4.0, tolua, TkLua 4.0a1 und LuaSocket 1.4. Die genannten Distributionen sowie die für eine Übersetzung unter Microsoft Visual Studio 6.0 benötigten Projekt- und Resourcen-Dateien können außerdem von dieser Seite aus heruntergeladen werden.

Die "Portierung" erwies sich im Nachhinein als äußerst einfach: die hier dokumentierten Arbeiten sind das Ergebnis von etwas mehr als zwei vollen Arbeitstagen (à 7.5 Stunden) - dies schließt die Installation von Microsoft Visual Studio sowie die Einarbeitung in dieses System (mithilfe der beiliegenden Hilfe-Dateien) mit ein!

Inzwischen enthält die hier vorgestellte Distribution auch die unter [10] veröffentlichten Fehlerbereinigungen für Lua 4.0!

Bitte beachten Sie auch die Betrachtungshinweise und die Liste der letzten Änderungen!

Themenübersicht

Die folgende Themenübersicht führt Sie unmittelbar zu der von Ihnen gewünschten Information - klicken Sie dazu einfach auf das Thema Ihrer Wahl:

Lua

Die "Portierung" des Lua-Laufzeitsystems beruht auf den Original-Quelltexten [1] (inklusive der unter [10] veröffentlichten Fehlerbereinigungen), der "offiziellen" Win32-Portierung [2] sowie Projekt- und Resourcen-Dateien aus einer "inoffiziellen" Portierung [3]. Für die hier vorgestellte Win32-Distribution waren keinerlei Änderungen am Quelltext erforderlich, stattdessen mußten Projekt-Dateien für Visual Studio 6.0 sowie "def"-Dateien für die Einsprünge der zu erzeugenden Bibliotheken (DLLs) erstellt werden. Der "inoffiziellen Portierung" [3] wurde außerdem das Lua-Symbol (Lua.icon) entnommen.

Das Ergebnis der Bemühungen sind zwei Bibliotheken (LuaCore.dll und LuaLib.dll) sowie ein von der Kommandozeile aus startbares Programm (Lua.exe), mit dessen Hilfe eigenständig lauffähige Lua-Programme ausgeführt werden können.

LuaC

Auch für die "Portierung" des Lua-Compiler LuaC wären vermutlich keinerlei Quelltext-Änderungen erforderlich gewesen - allerdings benötigt der Compiler offenbar eine Reihe zusätzlicher Einsprünge in das Lua-Laufzeitsystem. Da diese Einsprünge jedoch (mangels Bedarf) noch nicht in die Lua-Bibliotheken integriert wurden, steht der Lua-Compiler (LuaC.exe) unter Win32 noch nicht zur Verfügung.

tolua

Die Implementierung der Lua-Schnittstelle zu Tcl/Tk (TkLua) verwendet das "System" tolua, um die Integration der in C/C++ geschriebenen Tcl/Tk-Funktionen in Lua-Programme zu vereinfachen. Vor einer erfolgreichen Portierung von TkLua muß also zunächst auch tolua portiert werden. Glücklicherweise sind für die "Portierung" selbst keinerlei Änderungen am Quelltext erforderlich - der Autor mußte lediglich die in [6] erwähnten Korrekturen integrieren und eine passende "def"-Datei für die zu erstellende "tolua"-Bibliothek anlegen.

Das Ergebnis der Bemühungen sind ein von der Kommandozeile aus startbares Programm (toLua.exe) sowie eine separat ladbare Bbiliothek (toLuaLib.dll).

TkLua

TkLua stellt Lua-Programmen eine (sehr komfortable) Schnittstelle zu Tcl/Tk zur Verfügung. Für die erfolgreiche Portierung des Paketes müssen die zu den Tcl/Tk-Bibliotheken gehörenden "lib"-Dateien vorliegen - am einfachsten erreicht man dies durch Installation der Tcl/Tk-Quellen. Nach einer Übersetzung dieser Quellen stehen nicht nur die besagten "lib"-Dateien, sondern auch die dazu passenden Bibliotheken zur Verfügung - Probleme mit evtl. Inkompatibilitäten lassen sich somit von vorneherein vermeiden.

Da Lua nur für den Aufruf von der Kommandozeile aus konzipiert ist, TkLua-Programme jedoch eine grafische Umgebung benötigen, muß zusätzlich zur reinen "Portierung" des Paketes selbst (die erneut keinerlei Änderungen am Quelltext erfordert) ein passendes Startprogramm geschrieben werden. Der Autor hat dieses Programm auf der Basis der "windowing shell" (wsh) aus der Tcl/Tk-Distribution sowie des ursprünglichen Lua-Startprogrammes entwickelt.

Das Ergebnis der Arbeiten sind eine separat ladbare Bibliothek (TkLuaLib.dll) sowie ein sowohl von der Kommandozeile aus als auch aus Windows heraus aufrufbares Programm (TkLua.exe).

LuaSocket

Das Paket "LuaSocket" stellt Lua-Programmen eine Reihe von Funktionen für den Zugriff auf Datennetze zur Verfügung. Die "Portierung" beschränkt sich wie zuvor auf das Anlegen einer "def"-Datei für die zu erstellende Bibliothek sowie die Integration dieser Bibliothek in die Startprogramme Lua.exe und TkLua.exe.

Das Ergebnis der Bemühungen sind eine separat ladbare Bibliothek (LuaSocketLib.dll) sowie um diese Bibliothek erweiterte Fassungen der Lua- und TkLua-Startprogramme (LuaSocket.exe, TkLuaSocket.exe).

Distributionen und Projekt-Dateien

Wer nur an den Ergebnissen der TkLua-Portierung interessiert ist, kann sich die betreffenden Dateien an dieser Stelle als ZIP-Archiv herunterladen - eine Installationsanleitung finden Sie im folgenden Abschnitt:

Zusätzlich stehen auch der Quelltext aller vom Autor erstellten/modifizierten Programme und Bibliotheken sowie die verwendeten Projektdateien für Visual Studio 6.0 als ZIP-Archiv zur Verfügung:

(Hinweis: die Original-Quelltexte von Lua, tolua, TkLua und LuaSocket sind in diesem ZIP-Archiv nicht enthalten)

Installationsanleitung

Ein Installationsskript steht derzeit noch nicht zur Verfügung - falls ausreichend Bedarf besteht, kann der Autor ggfs. versuchen, ein solches Skript zur Verfügung zu stellen.

Bislang muß die Installation jedoch (wie nachstehend beschrieben) manuell vorgenommen werden:

  1. Installation von Tcl/Tk 8.3.4
    wer TkLua einsetzen möchte, benötigt dazu Tcl/Tk in der Version 8.3.4. Laden Sie die Win32-Distribution [9] herunter und installieren Sie sie auf Ihrem Rechner;
  2. Herunterladen der Lua-Distribution
    laden Sie nun das ZIP-Archiv mit den vom Autor erstellten Win32-Distributionen herunter
  3. Entpacken der Lua-Distribution (in ein Programmverzeichnis)
    entpacken Sie das ZIP-Archiv in ein Verzeichnis Ihrer Wahl - empfohlen wird ein Verzeichnis der Form c:\Programme\Lua;
  4. "Installation" der Lua-DLLs
    damit die ladbaren Bibliotheken (DLLs) vom System gefunden werden, verschieben oder kopieren Sie sie in Ihr Windows-Systemverzeichnis (z.B. c:\Windows);
  5. Aufnahme des Lua-Laufzeitsystems in den Kommando-Suchpfad
    damit Lua auch von der Kommandozeile aus aufgerufen werden kann, müssen Sie das Lua-Programmverzeichnis in den Suchpfad aufnehmen. Zusätzlich empfiehlt sich die Definition von Kürzeln für den Programmaufruf. Der Autor hat zu diesem Zweck die folgenden Befehle in die Datei Autoexec.bat eingetragen:
      set LuaHome=c:\Programme\Lua
      set Path=%Path%;%LuaHome%
    
      c:\windows\command\doskey   Lua=%LuaHome%\Lua $*
      c:\windows\command\doskey TkLua=%LuaHome%\TkLua $*
    

    Wer zusätzlich das LuaSocket-Paket nutzen will, trägt stattdessen ein:

      set LuaHome=c:\Programme\Lua
      set Path=%Path%;%LuaHome%
    
      c:\windows\command\doskey   Lua=%LuaHome%\LuaSocket $*
      c:\windows\command\doskey TkLua=%LuaHome%\TkLuaSocket $*
    
  6. Konfiguration der Tcl/Tk-Schnittstelle
    zusätzlich müssen folgende Befehle zur Konfiguration von Tcl/Tk eingetragen werden:
      set TclHome=c:\Programme\Tcl
    
      set Tcl_Library=%TclHome%\lib\tcl8.3
      set  Tk_Library=%TclHome%\lib\tk8.3    
    

    Dabei wird davon ausgegangen, daß Tcl/Tk in das Verzeichnis c:\Programme\Tcl installiert wurde - anderenfalls muß die Verzeichnisangabe entsprechend angepaßt werden. Ohne diese Eintragungen kann Tcl/Tk von TkLua nicht korrekt initialisiert werden;

  7. Neustart des Rechners
    damit die in Autoexec.bat vorgenommenen Änderungen aktiviert werden, müssen Sie Ihren Rechner neu starten;

Nach der erfolgreichen Absolvierung der genannten Installationsschritte sollten Lua, TkLua, LuaSocket und tolua unter Win32 zur Verfügung stehen (die zu LuaSocket gehörenden Module mit Implementierungen der Protokolle ftp, http, smtp sowie einigen Hilfsfunktionen befinden sich im Unterverzeichnis "Socket" unterhalb des Installationsverzeichnisses). Mithilfe der Beispiele des Autors sowie der Programme aus der "Acquainting"-Serie können Sie die Funktionsfähigkeit Ihrer Installation überprüfen.

Literaturhinweise

[1] Lua 4.0 - Quelltexte und Plattform-spezifische Distributionen
(siehe http://www.lua.org/download.html)
die angegebene Seite verweist auf den Quelltext sowie eine Reihe von fertig übersetzten Distributionen für verschiedene Plattformen;
[2] Win32-Portierung von Lua 4.0
(siehe http://www.tecgraf.puc-rio.br/lua/ftp/binaries/Windows/)
das angegebene ftp-Verzeichnis enthält Lua-Bibliotheken zur Verwendung in verschiedenen C-Entwicklungssystemen (Borland, Visual Studio, Watcom) sowie fertig übersetzte Programme zur Ausführung und Übersetzung von Lua-Programmen - alles für Win32-Plattformen;
[3] Philippe Lhoste
Lua Page

(siehe http://jove.prohosting.com/~philho/softwares/PhiLhoSoft/Lua/index.html)
Philippe Lhoste stellt ebenfalls eine Lua-Distribution für Win32-Rechner sowie die dabei verwendeten Projekt-Dateien zur Verfügung;
[4] Waldemar Celes
tolua - accessing C/C++ code from Lua
(siehe http://www.tecgraf.puc-rio.br/~celes/tolua/)
tolua vereinfacht die Verbindung von in C oder C++ geschriebenen Anwendungen und Bibliotheken mit Lua-Programmen. Die angegebene Web-Seite beschreibt die grundlegenden Mechanismen von tolua und den Umgang mit dem System;
[5] Waldemar Celes
tklua - Binding Tk to Lua
(siehe http://www.tecgraf.puc-rio.br/~celes/tklua/)
TkLua ermöglicht die Verwendung von Tk-Komponenten (für grafische Benutzeroberflächen) von Lua-Programmen aus. Die genannte Web-Seite beschreibt wie TkLua funktioniert und wie es in Lua-Programmen eingesetzt werden kann;
[6] Christian Vogler
TkLua (4.0a1)
(siehe http://www.cis.upenn.edu/~cvogler/lua/tklua.html)
während die unter [5] genannte TkLua-Distribution nur für Lua-Versionen < 4.0 gedacht ist, eignet sich die hier erwähnte Fassung für Lua-Versionen mit dem neuen Lua 4.0 API;
[7] Diego Nehab
LuaSocket - IPv4 Sockets support for the Lua language
(siehe http://www.tecgraf.puc-rio.br/~diego/luasocket)
LuaSocket erweitert Lua um wichtige IPv4-Funktionen. Unter der genannten Adresse finden Sie eine Beschreibung des Paketes und können sich eine Distribution herunterladen;
[8] Tcl Developer Site
(siehe http://www.scriptics.com)
wer TkLua nutzen möchte, muß dazu Tcl/Tk installiert haben. Die genannte Web-Seite ist der Ausgangspunkt für Recherchen zum Thema Tcl/Tk;
[9] Download Tcl/Tk 8.3.4
(siehe http://www.scriptics.com/software/tcltk/downloadnow83.tml)
von der genannten Seite aus können Sie sich die für TkLua benötigte Version 8.3.4 von Tcl/Tk herunterladen;
[10] Lua 4.0 Update
(siehe ftp://ftp.tecgraf.puc-rio.br/pub/lua/lua-4.0-update.tar.gz)
die genannte Datei enthält eine Reihe von Fehlerbereinigungen für Lua 4.0;

Haftungsausschluß

Bitte beachten Sie auch den Haftungsausschluß des Autors!

http://www.Andreas-Rozek.de/Lua/Distributions/index.html    (letzter Stand: 11.06.2002)