這是關於 VisLua 實作中各種問題的一些重點。
GUI 函式庫
GUI 函式庫有數百種 [1],但很少有好的可移植、維護良好的函式庫。以下是幾個選擇:-
- wxWindows [2]。這是一個頗大的函式庫,但有很多有用的元件,而且很具可移植性。支援的平台如下 [3]:
- Windows 3.1、Windows 95/98、Windows NT、Windows 2000、Windows ME。
- 使用 GTK+ 的 Linux 和其他 Unix 平台。
- 具備 Motif 或自由 Motif 分身 Lesstif 的 Unix。
- Mac OS。
- 正在研究嵌入式平台。請參閱 wxUniversal 專案。
- OS/2 埠正在進行中,您還可以在 OS/2 上為 GTK+ 或 Motif 編譯 wxWindows。
- FLTK [4]。顧名思義,相當精簡且快速。不特別具可移植性。平台:-
- X - Unix。
- Win32。
- MAC OS 埠可用。
- Tcl/Tk [5]。相當具可移植性,但元件組有限。平台 [6]:-
- Windows 95、98、NT 4.0 (Intel)、2000
- Solaris 2.5、2.6、7 (SPARC)
- HP-UX 10.20
- Linux (Intel、Red Hat 5.0+、SuSE 6.0+)
- SGI IRIX 6.3+
- IUP [7] TeCGraf 內部。"IUP 使用基於 TEX 文字編輯器的 box 與 glue 架構的抽象佈局模型。此模型結合對話規格語言 (LED) 或 Lua 繫結 (IupLua),讓對話方塊的建置工作更具彈性且獨立於顯示卡的解析度之外。"
- Motif。
- Microsoft Windows 95、Microsoft Windows 98、Microsoft Windows NT、Microsoft Windows 2000。
- FOX [8]。0.99.193 版本的平台如下。看起來極具可移植性。別以為元件組有像 wxWindows 那麼大,它可是相當值得一拼的競爭對手!沒有 MacOS 埠,不過據報導只要有 (大量) 工作在 X11 支援下使用,應該是可行的。
- Linux。任何版本的 Linux 都應該適用,在任何硬體上都可以。FOX 目前正在 LINUX 上開發。
- FreeBSD。據報導 FreeBSD 可行。
- SGI IRIX。採用 IRIX 5.3 以上版本的 SGI 系統。可以使用 GCC 或 SGI 的 MIPS Pro C++ 編譯器編譯。
- SunOS/Solaris。Solaris 或 SunOS。使用 GCC 或 Sun Workshop C++ 編譯。
- HP-UX。在 HP-UX 9.x 與 10.x 下以 GCC 進行測試。
- IBM AIX。在 AIX 4.2 下以 GCC 進行測試。
- DEC Alpha/COMPAQ Tru64。在 Digital Unix 4.0 下以 GCC 進行測試。
- 其他 UNIX 系統。如果您有合理的 C++ 編譯器、UNIX、X11,那麼讓 FOX 執行成功的可能性很高。
- Microsoft Windows 2000、Windows NT 4.0、Windows 95、Windows 98。與 Visual C++ 6.0、Borland C++ Builder、CYGWIN32、MINGWIN32,以及 IBM VisualAge? C++ for Windows 一起編譯。舊版本的 Visual C++ 也可以執行,不過您必須自行建立專案。
- WideStudio [9]。「WideStudio 為整合開發環境 (IDE),可建置 GUI 應用程式以用於 [請參閱下文]。此軟體為免費軟體(麻省理工學院/ X 合約授權)。」附含 gcc 的 IDE 環境並非原生繪製而成,可搭配建置專案使用。
- Linux
- FreeBSD
- SOLARIS
- Windows 95/98/ME、Windows NT、Win2K。
我建議使用 wxWindows,因為它有龐大的小工具組且可移植性很高。目前正在進行繫結作業 [10],使用自訂繫結程式。另一種選擇是與 wxPython 一起提供的 SWIG 繫結 [11]。這些繫結程式可以修改後搭配 LuaSWIG [12] 使用,並可隨著 wxWindows 和 wxPython 更新而更新。
關於程式碼風格的注意事項
所有程式碼應儘可能具有可移植性且有完善的記錄。這需要進一步的討論。大部分程式碼可能會用於 Lua 的 ANSI C 編寫,以協助提高可移植性。
wxWindows 對使用 C++有一些指引 [13],例如不使用樣板等。若要針對 GUI 使用 wxLua,且可移植性為首要考量,請留意這些指引。
語法標記
未修改的 Lua 語法標記可在 wxLua 中透過 Scintilla 編輯器運作 [14]。不支援 Scintilla 的平台可以使用文字編輯器。
有關 Lua 問題的注意事項
Lua 這個程式語言有一些問題,例如人們喜歡修改和嵌入它。
- 變更數字類型,也就是從 double 變更為 float。
- 語法變更,也就是語言可能已修改。
這些問題可透過重新編譯 wxLua 繫結程式來解決,VisLua,以及除錯繫結程式,讓其符合用戶端應用程式。這些繫結程式的包裝程式可以讓您設定任何語法變更。
除錯器
- 除錯程式伺服器應能使用標準 Lua 除錯程式庫
ldblib.c
執行任何除錯動作。 - GUI 是使用 wxLua GUI 程式庫以 Lua 編寫而成。
結構
請參閱 VisLuaGlossary,了解所有令人困惑的術語。
+--------------------------------+
| application (C/C++/Lua/etc) |
| |
+ +-------------------+ +--------+
| | debug server core | | Lua VM |
+-+-------------------+-+--------+
|
| <-- debug link
|
+--------------------------------+
| | debug client core | | Lua VM |
| +-------------------+ +--------|
| |
| debug client w/ UI |
+--------------------------------+
*>8^)-|=< user
概念驗證
我敲了一個應用程式,讓您可以透過 Telnet 連線進入 Lua 工作階段,就像您在執行主控台一樣。請在開發人員清單上提供回饋意見,不要在此處提供。
- 檔案:wiki_insecure/users/ntrout/vislua/vlds_test.zip
關於實作的意見
- 偶爾會移除意見,因為已在 VisLua-dev 郵件清單上討論過。
最新變更 · 喜好設定
編輯 · 歷史
最後編輯 2003年02月12日 晚上 8:13 GMT (diff)