Author Topic: The GuiTools Framework  (Read 73852 times)

0 Members and 1 Guest are viewing this topic.

Offline RhoSigma

  • QB64 Developer
  • Forum Resident
  • Posts: 565
    • View Profile
The GuiTools Framework
« on: November 23, 2018, 08:44:35 am »
If you're just here for my Libraries Collection or any other Bonus Stuff, then please scroll down approx. half a wheel spin to get there. For the GuiTools Framework otherwise just continue reading.

GuiTools - Another graphic UI framework

GuiTools is a ready to use program template/skeleton to create neat graphic UI applications with QB64, ie. to build your own UI forms you just need to add the desired object definitions into the template and the handler code which shall be called when your objects are triggered, while leaving all other parts of the template as is.
  • GuiTools works with every QB64 version since v0.954 (SDL), so if you're one of these normal people who not update to the latest development build every week, that's not a problem. Just use whatever QB64 version you've installed, as long it's greater or equal to the 0.954 version.
  • GuiTools was developed with its main attention at dynamic UI creation, ie. you can easily create, modify and delete objects during runtime on the fly. There is intentionally no Designer tool here, as it would encourage people to build static UIs only. Although static UIs are quite legitimate here and there (and also possible with GuiTools), it would be a waste of GuiTools its capabilities.
  • GuiTools can handle multiple forms in one program, each form in its very own independent window on your desktop, but all forms are still controlled in realtime by that one program, hence real multi-windows applications. As shown in the Multi Windows Demo, it's even possible to have interactions between several forms windows.
  • GuiTools does already include a huge amount of useful functions, ready for use within your handler code. The range goes from general file and string handling functions to specialized functions like image processing and packing/unpacking. The inbuilt MessageBox and FileOpenDialog do perfectly fit into the GuiTools look and feel.
  • GuiTools its UIs can be customized by every local user. Using the provided Preferences Editor, users can easily change colors, wallpapers and patterns of the GuiTools UIs without the need to recompile any applications.
Note that GuiTools does not implement the usual Windows like look and feel, but is inspired by the AmigaOS versions 2.0 to 3.9, which have a simple yet elegant look (find some screenshots at the end of this post).

Release v0.14 (latest changes)

The entire GuiTools Framework got an overhaul to not longer relying on the old recursion bug, which got finally fixed in QB64 v2.0 development builds (see https://qb64forum.alephc.xyz/index.php?topic=4209). For the full list of changes see the docs\ReleaseNotes.txt file in the archive.

            (Oct/21)(Windows only (Linux/Mac see here))

Make sure to move the extracted QB64GuiTools folder with its entire contents into your QB64 folder (where qb64.exe is in). If you're new to GuiTools, then please also read the GuiTools-Info.html file in the main folder for a short introduction of the project structure.

barSpectraH.jpg

Bonus Stuff - This is not related to, nor required by GuiTools

              (Oct/21)(My libraries collection (Image processing/Data buffering/MD5/SHA2/LZW...))
         (Jul/21)(Just some simple Screen blankers for fun)
           (Nov/21)(My QB64/Notepad++ integration pack (for npp 8.1.1 and up))

Make sure to move the extracted QB64Library folder with its entire contents into your QB64 folder (where qb64.exe is in). You find an overview of all libraries in the QB64Library-Info.html file.

The Screen blankers and the Notepad++ stuff can be placed freely, although the QB64 folder might be the best choice for them too.

barSpectraH.jpg

Forum Links - Quickly find my other useful code snippets

(F) Bin$() --- Convert any numbers into a binary string similar as HEX$ and OCT$ do for its respective bases
(F) IndexFormat$() --- Format strings and numbers in PRINT USING style but with several useful extensions
(F) ParseLine&() --- Parse a string and split it into its individual parts using the given separators and quotes
(L) External Module Player --- How to play the well known Tracker Music Modules using XMP (for 32bit only)
(P) MakeDATA --- Convert any file into DATAs and embed it in your program for later write back (also part of GuiTools)
(F) Alternative INKEY$ --- Maps international chars to CP437 without the need to use _MAPUNICODE and TTF fonts
(L) Falcon Wrapper --- Print unicode strings as easy as possible using falcon.h functions and TTF fonts

(F) = Function, (P) = Program/Application, (L) = Library

barSpectraH.jpg

Screenshots - This is the usual look of GuiTools Applications

GTPE-Colors.png


LogicTrainer.png


MakeDATA.png

« Last Edit: March 14, 2022, 05:34:36 am by RhoSigma »
My Projects:   https://qb64forum.alephc.xyz/index.php?topic=809
GuiTools - A graphic UI framework (can do multiple UI forms/windows in one program)
Libraries - ImageProcess, StringBuffers (virt. files), MD5/SHA2-Hash, LZW etc.
Bonus - Blankers, QB64/Notepad++ setup pack

Offline RhoSigma

  • QB64 Developer
  • Forum Resident
  • Posts: 565
    • View Profile
Re: The GuiTools Framework
« Reply #1 on: December 28, 2018, 06:22:27 am »
bump to v0.9 (see initial post here)
« Last Edit: January 31, 2022, 06:06:39 pm by RhoSigma »
My Projects:   https://qb64forum.alephc.xyz/index.php?topic=809
GuiTools - A graphic UI framework (can do multiple UI forms/windows in one program)
Libraries - ImageProcess, StringBuffers (virt. files), MD5/SHA2-Hash, LZW etc.
Bonus - Blankers, QB64/Notepad++ setup pack

Offline ForSe

  • Newbie
  • Posts: 6
    • View Profile
Re: The GuiTools Framework
« Reply #2 on: December 28, 2018, 07:37:44 am »
How did you compile this? The demo always returns an error. :/
It said "File 'QB64GuiTools\dev_framework\classes\GuiClasses.bi' not found", then I tried to copy the whole of "QB64GuiTools" folder into the "QB64GuiTools\src_GuiAppDemo", but now the '$INCLUDE: 'QB64GuiTools\dev_framework\GuiAppFrame.bm' said "File 'QB64GuiTools\dev_framework\GuiAppIcon.bm' not found".

Offline RhoSigma

  • QB64 Developer
  • Forum Resident
  • Posts: 565
    • View Profile
Re: The GuiTools Framework
« Reply #3 on: December 28, 2018, 08:08:27 am »
How did you compile this? The demo always returns an error. :/
It said "File 'QB64GuiTools\dev_framework\classes\GuiClasses.bi' not found", then I tried to copy the whole of "QB64GuiTools" folder into the "QB64GuiTools\src_GuiAppDemo", but now the '$INCLUDE: 'QB64GuiTools\dev_framework\GuiAppFrame.bm' said "File 'QB64GuiTools\dev_framework\GuiAppIcon.bm' not found".

It's a simple Out of the Box installation. The extracted QB64GuiTools folder must go inside your QB64 folder (where also qb64.exe is in), but don't change the folder structure inside QB64GuiTools.

BTW - What did I wrote above you shall do, if you're new to GuiTools? ;-)
My Projects:   https://qb64forum.alephc.xyz/index.php?topic=809
GuiTools - A graphic UI framework (can do multiple UI forms/windows in one program)
Libraries - ImageProcess, StringBuffers (virt. files), MD5/SHA2-Hash, LZW etc.
Bonus - Blankers, QB64/Notepad++ setup pack

Offline ForSe

  • Newbie
  • Posts: 6
    • View Profile
Re: The GuiTools Framework
« Reply #4 on: December 28, 2018, 09:17:34 am »
BTW - What did I wrote above you shall do, if you're new to GuiTools? ;-)

Oops, sorry, I forgot to read the whole post before download it. xP

Anyway, these are my two cents:
- I noticed that the text of check boxes & radio[ button]s cannot be clicked.
- Lists and radios should can be navigated by arrow keys.
- Sliders also should can be controlled by arrow keys.
- Also I found it interesting that both of the arrow buttons of the list are below or only one side of the scrollbar.

That's it for now. (pardon my poor grammar, I'm a non-native speaker)

Cheers.
« Last Edit: December 28, 2018, 09:19:45 am by ForSe »

Offline RhoSigma

  • QB64 Developer
  • Forum Resident
  • Posts: 565
    • View Profile
Re: The GuiTools Framework
« Reply #5 on: December 28, 2018, 10:01:01 am »
Anyway, these are my two cents:
- I noticed that the text of check boxes & radio[ button]s cannot be clicked.
- Lists and radios should can be navigated by arrow keys.
- Sliders also should can be controlled by arrow keys.

That's all true, and it will probably never change to do so. Baam, that sounds hard I know, but when you find time in the next few hours/days to read at least the Introduction part of docs\GuiToolsFramework.pdf, then you will notice that I'm not going to reinvent Windows, but the Commodore Amiga's GadTools user interface. Hence look and operation of my GUIs will (mainly) follow Amiga-style, not usual Windows-style. Nevertheless this is no strict guideline, so you may still hope, but it's certainly not 1st priority for me to implement keyboard controls for things which were mainly developed for mouse control (except input fields of course :))

BTW - Did you try the scrollwheel + Ctrl on lists/radio/cycle on sliders/scrollers also without Ctrl or with Shift pressed. Also lists/radio/cycle have shortcuts (shown in the tooltips).

- Also I found it interesting that both of the arrow buttons of the list are below or only one side of the scrollbar.

For sure, I think this is one of the BEST inventions of the AmigaOS. Think about a big window, maybe even a fullscreen one, and now you wanna single step back and forth vertically and horizontally. You need extreme mouse movements from arrow to arrow button, moving up/down/left/right and even diagonal accross the entire screen (guess that's why windows needs key controls for scrollers :)). In the Amiga's GUI and now in my GuiTools you reach every arrow with minimal mouse moves.

BTW - Have you tried holding down any scroll arrow for more than 0.5 sec, it will start repeating the single step.

Have fun...

My Projects:   https://qb64forum.alephc.xyz/index.php?topic=809
GuiTools - A graphic UI framework (can do multiple UI forms/windows in one program)
Libraries - ImageProcess, StringBuffers (virt. files), MD5/SHA2-Hash, LZW etc.
Bonus - Blankers, QB64/Notepad++ setup pack

Offline RhoSigma

  • QB64 Developer
  • Forum Resident
  • Posts: 565
    • View Profile
Re: The GuiTools Framework
« Reply #6 on: March 01, 2019, 08:11:59 pm »
bump to v0.9 (Repackaged) (see initial post here)
« Last Edit: January 31, 2022, 06:14:09 pm by RhoSigma »
My Projects:   https://qb64forum.alephc.xyz/index.php?topic=809
GuiTools - A graphic UI framework (can do multiple UI forms/windows in one program)
Libraries - ImageProcess, StringBuffers (virt. files), MD5/SHA2-Hash, LZW etc.
Bonus - Blankers, QB64/Notepad++ setup pack

Offline RhoSigma

  • QB64 Developer
  • Forum Resident
  • Posts: 565
    • View Profile
Re: The GuiTools Framework
« Reply #7 on: June 11, 2019, 10:02:34 am »
bump to v0.10 (see initial post here)
« Last Edit: January 31, 2022, 06:29:31 pm by RhoSigma »
My Projects:   https://qb64forum.alephc.xyz/index.php?topic=809
GuiTools - A graphic UI framework (can do multiple UI forms/windows in one program)
Libraries - ImageProcess, StringBuffers (virt. files), MD5/SHA2-Hash, LZW etc.
Bonus - Blankers, QB64/Notepad++ setup pack

Offline keybone

  • Forum Regular
  • Posts: 116
  • My name a Nursultan Tulyakbay.
    • View Profile
Re: The GuiTools Framework
« Reply #8 on: June 12, 2019, 10:12:46 pm »
What about GuiTools makes it windows only?
Or is it just untested under any other OS?
I am from a Kazakhstan, we follow the hawk.

Offline RhoSigma

  • QB64 Developer
  • Forum Resident
  • Posts: 565
    • View Profile
Re: The GuiTools Framework
« Reply #9 on: June 13, 2019, 01:50:19 am »
What about GuiTools makes it windows only?
Or is it just untested under any other OS?

Hi keybone,
it's mainly the Win API calls i use in some support functions in dev_framework\GuiAppFrame.h and in the DECLARE LIBRARY block (line 160) in GuiAppFrame.bi,
but it could also be that i use keywords here and there, which are unsupported under Mac/Linux (never checked that).

If you're familiar with Mac and/or Linux and their internals, then feel free to try replacing the Win API calls with respective Mac/Linux API calls (if compareable calls exist for these). I would be happy to include these via conditional pre-compiler sections in the future, but I've never ever been in touch with any Mac/Linux system and have no idea, if the Win API calls have their native counterparts on Mac/Linux.
My Projects:   https://qb64forum.alephc.xyz/index.php?topic=809
GuiTools - A graphic UI framework (can do multiple UI forms/windows in one program)
Libraries - ImageProcess, StringBuffers (virt. files), MD5/SHA2-Hash, LZW etc.
Bonus - Blankers, QB64/Notepad++ setup pack

Offline keybone

  • Forum Regular
  • Posts: 116
  • My name a Nursultan Tulyakbay.
    • View Profile
Re: The GuiTools Framework
« Reply #10 on: June 13, 2019, 06:40:32 am »
Hi keybone,
it's mainly the Win API calls i use in some support functions in dev_framework\GuiAppFrame.h and in the DECLARE LIBRARY block (line 160) in GuiAppFrame.bi,
but it could also be that i use keywords here and there, which are unsupported under Mac/Linux (never checked that).

If you're familiar with Mac and/or Linux and their internals, then feel free to try replacing the Win API calls with respective Mac/Linux API calls (if compareable calls exist for these). I would be happy to include these via conditional pre-compiler sections in the future, but I've never ever been in touch with any Mac/Linux system and have no idea, if the Win API calls have their native counterparts on Mac/Linux.

Thanks for the info, your GUI toolkit is awesome, I primarily use linux. I have tried it before on a windows system when i had access to one, and one of these days when i get time ill try to mess around with it and see if i can make it work. Im not the best programmer in the world so no guarantees but if i figure it out ill let u know. :D
I am from a Kazakhstan, we follow the hawk.

Offline RhoSigma

  • QB64 Developer
  • Forum Resident
  • Posts: 565
    • View Profile
Re: The GuiTools Framework
« Reply #11 on: June 14, 2019, 02:25:25 am »
QB64 (the win version) runs very fine if you have installed Wine under Linux and the GuiToolsFramework runs too. It needs a little bit mor time for compiling.

So Wine is some kind of an emulator? And it does even emulate the WinAPI calls? Well obviously it does, otherwise the Windows version of QB64 won't run either i guess.

Well that's an alternative for Keybone and anybody else who wanna give GuiTools a try on Linux.

Thanks for that valuable info BSpinoza.
My Projects:   https://qb64forum.alephc.xyz/index.php?topic=809
GuiTools - A graphic UI framework (can do multiple UI forms/windows in one program)
Libraries - ImageProcess, StringBuffers (virt. files), MD5/SHA2-Hash, LZW etc.
Bonus - Blankers, QB64/Notepad++ setup pack

Offline SMcNeill

  • QB64 Developer
  • Forum Resident
  • Posts: 3972
    • View Profile
    • Steve’s QB64 Archive Forum
Re: The GuiTools Framework
« Reply #12 on: June 14, 2019, 02:41:59 am »
So Wine is some kind of an emulator? And it does even emulate the WinAPI calls? Well obviously it does, otherwise the Windows version of QB64 won't run either i guess.

Wine (originally an acronym for "Wine Is Not an Emulator") is a compatibility layer capable of running Windows applications on several POSIX-compliant operating systems, such as Linux, macOS, & BSD. Instead of simulating internal Windows logic like a virtual machine or emulator, Wine translates Windows API calls into POSIX calls on-the-fly, eliminating the performance and memory penalties of other methods and allowing you to cleanly integrate Windows applications into your desktop.

******************

Think of it as similar to WOW64. 

In computing on Microsoft platforms, WoW64 (Windows 32-bit on Windows 64-bit) is a subsystem of the Windows operating system capable of running 32-bit applications on 64-bit Windows.

The WoW64 subsystem comprises a lightweight compatibility layer that has similar interfaces on all 64-bit versions of Windows. It aims to create a 32-bit environment that provides the interfaces required to run unmodified 32-bit Windows applications on a 64-bit system.
https://github.com/SteveMcNeill/Steve64 — A github collection of all things Steve!

Offline RhoSigma

  • QB64 Developer
  • Forum Resident
  • Posts: 565
    • View Profile
Re: The GuiTools Framework
« Reply #13 on: June 14, 2019, 02:49:20 am »
...
Think of it as similar to WOW64. 

In computing on Microsoft platforms, WoW64 (Windows 32-bit on Windows 64-bit) is a subsystem of the Windows operating system capable of running 32-bit applications on 64-bit Windows.
...

Ahh, i see, good to know.
My Projects:   https://qb64forum.alephc.xyz/index.php?topic=809
GuiTools - A graphic UI framework (can do multiple UI forms/windows in one program)
Libraries - ImageProcess, StringBuffers (virt. files), MD5/SHA2-Hash, LZW etc.
Bonus - Blankers, QB64/Notepad++ setup pack

Offline KingRat

  • Newbie
  • Posts: 16
    • View Profile
Re: The GuiTools Framework
« Reply #14 on: June 14, 2019, 03:07:28 am »
Hi everyone!

I´ve downloaded it and I extracted the folder to my qb64 directory, but It doesn´t compiles the demos :\

It returns:
Quote
C:\Users\Sti\AppData\Local\Temp\ccVpsX2N.o:qbx.cpp:(.text+0x23): undefined reference to `__glutInitWithExit'
C:\Users\Sti\AppData\Local\Temp\ccVpsX2N.o:qbx.cpp:(.text+0x46): undefined reference to `__glutCreateWindowWithExit'
C:\Users\Sti\AppData\Local\Temp\ccVpsX2N.o:qbx.cpp:(.text+0x68): undefined reference to `__glutCreateMenuWithExit'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0x23): undefined reference to `__glutInitWithExit'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0x46): undefined reference to `__glutCreateWindowWithExit'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0x68): undefined reference to `__glutCreateMenuWithExit'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0x31211): undefined reference to `glutPostRedisplay'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0x31226): undefined reference to `glutTimerFunc'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0x69442): undefined reference to `glutSetCursor'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0x69695): undefined reference to `glutSetCursor'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0x69a62): undefined reference to `glutWarpPointer'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xa4a60): undefined reference to `glutGet'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xa4aae): undefined reference to `glutGet'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xa4af7): undefined reference to `glutIconifyWindow'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xaecc7): undefined reference to `glutGet'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xaecd3): undefined reference to `glutGet'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xaed10): undefined reference to `glutGet'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xaed1c): undefined reference to `glutGet'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xaed28): undefined reference to `glutGet'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xaeda5): undefined reference to `glutPositionWindow'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xaedc1): undefined reference to `glutGet'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xaedd0): undefined reference to `glutGet'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xaeddd): undefined reference to `glutGet'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xaedea): undefined reference to `glutGet'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xaee1e): undefined reference to `glutPositionWindow'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xba9af): undefined reference to `glutShowWindow'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xba9d7): undefined reference to `glutHideWindow'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xbc241): undefined reference to `glutGetModifiers'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xbc57e): undefined reference to `glutPostRedisplay'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xbc5cf): undefined reference to `glutTimerFunc'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xbfca8): undefined reference to `glutReshapeWindow'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xbfcad): undefined reference to `glutPostRedisplay'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xbfcf6): undefined reference to `glutReshapeWindow'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xbfcfb): undefined reference to `glutPostRedisplay'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xbfd98): undefined reference to `glutReshapeWindow'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xbfd9d): undefined reference to `glutPostRedisplay'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xbfdc2): undefined reference to `glutFullScreen'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xc0e61): undefined reference to `glutSwapBuffers'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xc1cc0): undefined reference to `glutSetWindowTitle'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xc440e): undefined reference to `glutInitDisplayMode'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xc441d): undefined reference to `glutInitWindowSize'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xc4427): undefined reference to `glutGet'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xc44dd): undefined reference to `glutDisplayFunc'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xc44f4): undefined reference to `glutTimerFunc'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xc4500): undefined reference to `glutKeyboardFunc'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xc450c): undefined reference to `glutKeyboardUpFunc'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xc4518): undefined reference to `glutSpecialFunc'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xc4524): undefined reference to `glutSpecialUpFunc'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xc4530): undefined reference to `glutMouseFunc'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xc453c): undefined reference to `glutMotionFunc'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xc4548): undefined reference to `glutPassiveMotionFunc'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xc4554): undefined reference to `glutReshapeFunc'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xc4560): undefined reference to `glutMouseWheelFunc'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xc4565): undefined reference to `glutMainLoop'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xc9ffd): undefined reference to `glutDisplayFunc'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xca014): undefined reference to `glutTimerFunc'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xca020): undefined reference to `glutKeyboardFunc'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xca02c): undefined reference to `glutKeyboardUpFunc'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xca038): undefined reference to `glutSpecialFunc'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xca044): undefined reference to `glutSpecialUpFunc'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xca050): undefined reference to `glutMouseFunc'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xca05c): undefined reference to `glutMotionFunc'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xca068): undefined reference to `glutPassiveMotionFunc'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xca074): undefined reference to `glutReshapeFunc'
libqb\os\win\libqb_1_3_000001000110.o:libqb.cpp:(.text+0xca080): undefined reference to `glutMouseWheelFunc'
collect2.exe: error: ld returned 1 exit status

Any idea?!?
« Last Edit: June 14, 2019, 03:10:44 am by KingRat »