mieki256's diary



2024/01/21() [n年前の日記]

#1 [basic] FreeBASICを再勉強中

スクリーンセーバの作り方についてググっていたら、FreeBASICを使ったスクリーンセーバの作成事例があるらしいと知った。「FreeBASICってそんなこともできるのか…」と気になり始めたので、少し試用してみた。

FreeBASICは、WindowsやLinuxで利用できるBASICコンパイラ。無料で使える。インタプリタではなくコンパイラなので、拡張子 .bas でソースを書いて、fbc hoge.bas で hoge.exe を生成できる。

_FreeBASIC Language | Home

今回は Windows10 x64 22H2上で使ってみた。

ちなみに、以前も少しだけ試用したことがある。

_mieki256's diary - 色々なBASICをちょっとだけ触ってみた
_mieki256's diary - FreeBASICのGUIライブラリを試用
_mieki256's diary - FreeBASICのグラフィックスライブラリを試用

インストール :

以下から辿って、.7z か .zip を入手する。

_FreeBASIC Compiler - Browse Files at SourceForge.net

今回は FreeBASIC-1.10.1-winlibs-gcc-9.3.0.7z を入手した。この版には、32bit版と64bit版の両方が入っている。

32bit版だけ欲しければ FreeBASIC-1.10.1-win32.zip を、64bit版だけ欲しければ FreeBASIC-1.10.1-win64.zip を入手すればいいのだろうけど、元々 FreeBASIC は32bit版しか無かったせいか、関連ライブラリが32bit版しかサポートしてないことも多いようで…。ここは両方入っている版を選んでおいたほうが良さそうな気がする。

解凍して任意の場所に置く。今回は D:\Dev\FreeBASIC\ に置いてみた。

ユーザ側の環境変数 PATH の最後に、D:\Dev\FreeBASIC を追加。fbc --version でバージョンを確認できたら利用できる状態になっている。
> fbc --version
FreeBASIC Compiler - Version 1.10.1 (2023-12-24), built for win32 (32bit)
Copyright (C) 2004-2023 The FreeBASIC development team.
standalone

FreeBASICでOpenGLを使う :

FreeBASIC は OpenGL を使って描画することもできる。FreeBASICインストールフォルダ\examples\graphics\OpenGL\ に、OpenGLを使ったサンプルがいくつか入っている。

fbgfx_opengl.bas のスクリーンショット。




fbgfx_texture.bas のスクリーンショット。




サンプルの中の gl_test.bas は、glut32.dll を要求する。MinGW用の freeglut.dll (freeglut 3.0.0 for MinGW、freeglut-MinGW-3.0.0-1.mp.zip) を入手して解凍。

_freeglut Windows Development Libraries
_The freeglut Project :: About

freeglut.dll を glut32.dll にリネームしつつ、.bas をビルドして生成した .exe と同じフォルダに置いたところ動いてくれた。




glext_test.bas は、glfw (libglfw.a) を要求する。以下のやり取りの中で入手先が提示されていた。

_Error when compiling - freebasic.net
_FreeBASIC Compiler - Browse /Older versions/0.90.1/Binaries - Windows/Libraries at SourceForge.net

FB-win32-glfw-2.7.7.zip を入手して解凍。FreeBASICインストールフォルダ/lib/win32/ に libglfw.a をコピーした。32bit (win32)用しか無いらしいので、試すときは 32bit版 FreeBASICを使う。この状態なら件の .bas をビルドして実行することができた。


また、以下のやり取りの中で、glfw 3.1.1 をビルドして配布されている方が居た。

_OpenGL Window library GLFW 3.1.1 (win/lin 32/64-bit) - freebasic.net

glfw-3.1.1.zip を入手して解凍すると、32bit版と64bit版の両方が入っていた。ファイル名は glfw ではなくて glfw3 になる。ただ、.bas 内の glfw.bi を glfw3.bi に変更しても、ビルドはできなかった。ちなみに元々、FreeBASIC 1.10.1 の inc/GLFW/ にも glfw3.bi が入っていた。


glu_quadrics.bas は、SDLを要求するが、-lSDL というエラーが出た。libSDL.a が必要なのだろうけど、入手方法が分からない。

試しにダメ元で、MSYS2のインストールフォルダ、D:/msys64/mingw32/lib/ から、以下のファイルを FreeBASICインストールフォルダ/lib/win32/ にコピーしてみたところ、件の .bas もビルドして動作させることができた。
libSDL.a
libSDL_gfx.a
libSDL_image.a
libSDL_mixer.a
libSDL_net.a
libSDL_ttf.a

こういうやり方で本当にいいのか分からんけど…。実際に動いてるから、まあ、いいか…。




せっかくの機会(?)なので、MSYS2 上で以下のパッケージもインストールしておいた。pacman -S xxxx でインストールできる。
mingw-w64-i686-SDL
mingw-w64-i686-SDL_image
mingw-w64-i686-SDL_gfx
mingw-w64-i686-SDL_net
mingw-w64-i686-SDL_ttf
mingw-w64-i686-SDL_mixer

mingw-w64-x86_64-SDL
mingw-w64-x86_64-SDL_gfx
mingw-w64-x86_64-SDL_net
mingw-w64-x86_64-SDL_ttf
mingw-w64-x86_64-SDL_image
mingw-w64-x86_64-SDL_mixer

mingw-w64-i686-SDL2
mingw-w64-i686-SDL2_gfx
mingw-w64-i686-SDL2_net
mingw-w64-i686-SDL2_ttf
mingw-w64-i686-SDL2_image
mingw-w64-i686-SDL2_mixer
mingw-w64-i686-SDL2_sound

mingw-w64-x86_64-SDL2
mingw-w64-x86_64-SDL2_gfx
mingw-w64-x86_64-SDL2_net
mingw-w64-x86_64-SDL2_ttf
mingw-w64-x86_64-SDL2_image
mingw-w64-x86_64-SDL2_mixer
mingw-w64-x86_64-SDL2_sound

IDE FbEditをインストール :

FreeBASICのソースを書くためのIDEっぽいアプリもインストールしてみた。一つは FbEdit。

_FbEdit

上記のページから FbEdit 1.0.7.4 Unicode対応版、fbedit1.0.7.4Unicode.zip を入手して解凍。今回は D:\Prog\FbEdit\ にインストール。

FbEdit.exe を実行すると、FreeBASICコンパイラ(fbc.exe)がある場所その他を尋ねてくるので設定。

少し触ってみたけれど、リソースエディタというか、フォームデザイナーも入っているのだな…。リソースファイルを選択して、ダイアログのレイアウトをGUI操作で作っていける。

IDE WinFBEをインストール :

WinFBE というIDEもインストールしてみた。

_WinFBE Editor and FreeBASIC Compiler (All-in-One Package) (V3.1.0 June 4, 2023) - freebasic.net
_PaulSquires/WinFBE: FreeBASIC Editor for Windows
_Releases - PaulSquires/WinFBE

WinFBE_Suite.zip (3.1.0) を入手して解凍。D:\Prog\WinFBE\ にインストールした。

これもフォームデザイナーがついている。FbEdit にしろ、WinFBE にしろ、ちょっとした GUIアプリなら作れる機能を用意しているようだなと…。

FBImageをインストール :

FreeBASICは標準状態だと bmp画像ファイルしか開けないようだけど、jpg, png, tga などを開いたり保存したりできる FBImage というライブラリがあるらしい。せっかくだからインストールしてみた。

_FBImage static Win/Lin 32/64-bit - freebasic.net

FBImage.zip を入手して解凍。中には以下が入っている。
FBImage.bi
lib/lin/libFBImage-32-static.a
lib/lin/libFBImage-64-static.a
lib/win/libFBImage-32-static.a
lib/win/libFBImage-64-static.a
test_*.bas

Windows環境の場合、以下のファイルを FreeBASICインストールフォルダ以下にコピー。
  • FBImage.bi を、FreeBASICインストールフォルダ/inc/ にコピー。
  • lib/win/libFBImage-32-static.a を、FreeBASICインストールフォルダ/lib/win32/ 以下にコピー。
  • lib/win/libFBImage-64-static.a を、FreeBASICインストールフォルダ/lib/win64/ 以下にコピー。

解凍したフォルダの中にはサンプルファイルが入っている。 test_*.bas がサンプルファイル。それぞれ数行で画像の読み込みや作成ができるようになっていた。一通りビルドして動かしてみたけれど、たしかに画像の読み書きができた。

以上です。

過去ログ表示

Prev - 2024/01 - Next
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project