Main Menu

Recent posts

#11
Installation help / Re: TGUI MSVC linker errors
Last post by nikodev - 14 January 2026, 17:23:01
Exception thrown: read access violation.
this->_Vec._Mypair._Myval2._Myfirst was 0x111277529122129.

Minimal code with small menu:
auto menu = tgui::MenuBar::create();
  menu->addMenu("File");
  menu->addMenuItem("New Project");

 
  menu->connectMenuItem({"File", "New Project"}, [] {
    std::cout << "Let me print! \n";
  });
 

  gui->add(menu, "menu1");

It runs when menu item is not connected, otherwise there is a read access violation.
#12
Installation help / Re: TGUI MSVC linker errors
Last post by texus - 14 January 2026, 17:03:20
Is the access violation giving you an address where it is reading from, and is that address near 0? If that would be the case, is there a chance that the menu bar on which you are calling connectMenuItem hasn't been initialized yet?

If that isn't the problem then could you perhaps share some minimal code that reproduces the issue?
#13
Installation help / Re: TGUI MSVC linker errors
Last post by nikodev - 14 January 2026, 15:45:05
Okay, now I did add TGUI_STATIC define, but it appears I get a runtime access violation when connectMenuItem method of MenuBar is invoked.  ??? 

Call stack:
editor.exe!std::_Hash<std::_Umap_traits<unsigned int,std::function<void __cdecl(void)>,std::_Uhash_compare<unsigned int,std::hash<unsigned int>,std::equal_to<unsigned int>>,std::allocator<std::pair<unsigned int const ,std::function<void __cdecl(void)>>>,0>>::_Find_last<unsigned int>(const unsigned int & _Keyval, const unsigned __int64 _Hashval) Line 1586 (c:\Program Files\Microsoft Visual Studio\18\Community\VC\Tools\MSVC\14.50.35717\include\xhash:1586)
editor.exe!std::_Hash<std::_Umap_traits<unsigned int,std::function<void __cdecl(void)>,std::_Uhash_compare<unsigned int,std::hash<unsigned int>,std::equal_to<unsigned int>>,std::allocator<std::pair<unsigned int const ,std::function<void __cdecl(void)>>>,0>>::_Try_emplace<unsigned int const &>(const unsigned int & _Keyval_arg) Line 700 (c:\Program Files\Microsoft Visual Studio\18\Community\VC\Tools\MSVC\14.50.35717\include\xhash:700)
editor.exe!std::unordered_map<unsigned int,std::function<void __cdecl(void)>,std::hash<unsigned int>,std::equal_to<unsigned int>,std::allocator<std::pair<unsigned int const ,std::function<void __cdecl(void)>>>>::operator[](const unsigned int & _Keyval) Line 433 (c:\Program Files\Microsoft Visual Studio\18\Community\VC\Tools\MSVC\14.50.35717\include\unordered_map:433)
editor.exe!tgui::Signal::connect<void <lambda>(void),0>(const tgui::SignalItemHierarchy::connect::__l2::void <lambda>(void) & func) Line 128 (c:\Users\Kaloyan\Documents\Projects\rpgpp\include\TGUI\Signal.hpp:128)
editor.exe!tgui::SignalItemHierarchy::connect<void <lambda>(const std::vector<tgui::String,std::allocator<tgui::String>> &),0>(const tgui::MenuBar::connectMenuItem::__l2::void <lambda>(const std::vector<tgui::String,std::allocator<tgui::String>> &) & func) Line 1122 (c:\Users\Kaloyan\Documents\Projects\rpgpp\include\TGUI\Signal.hpp:1122)
editor.exe!tgui::MenuBar::connectMenuItem<void <lambda>(void)>(const std::vector<tgui::String,std::allocator<tgui::String>> & hierarchy, EditorInterfaceService::{ctor}::__l2::void <lambda>(void) && handler) Line 122 (c:\Users\Kaloyan\Documents\Projects\rpgpp\include\TGUI\Widgets\MenuBar.hpp:122)
editor.exe!EditorInterfaceService::EditorInterfaceService() Line 41 (c:\Users\Kaloyan\Documents\Projects\rpgpp\src\editor\editorInterfaceService.cpp:41)
editor.exe!std::make_unique<EditorInterfaceService,0>() Line 3659 (c:\Program Files\Microsoft Visual Studio\18\Community\VC\Tools\MSVC\14.50.35717\include\memory:3659)
editor.exe!Editor::init() Line 24 (c:\Users\Kaloyan\Documents\Projects\rpgpp\src\editor\editor.cpp:24)
editor.exe!run_app() Line 17 (c:\Users\Kaloyan\Documents\Projects\rpgpp\src\editor\main.cpp:17)
editor.exe!main() Line 61 (c:\Users\Kaloyan\Documents\Projects\rpgpp\src\editor\main.cpp:61)
editor.exe!invoke_main() Line 79 (d:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:79)
editor.exe!__scrt_common_main_seh() Line 288 (d:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288)
editor.exe!__scrt_common_main() Line 331 (d:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:331)
editor.exe!mainCRTStartup(void * __formal) Line 17 (d:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_main.cpp:17)
kernel32.dll!00007ffae012e8d7() (Unknown Source:0)
ntdll.dll!00007ffae0d4c53c() (Unknown Source:0)
#14
Installation help / Re: TGUI MSVC linker errors
Last post by texus - 14 January 2026, 15:23:59
Did you add TGUI_STATIC to your preprocessor definitions?
It has to be defined when linking statically, otherwise the linker will search for these symbols in loaded DLL files instead of in the static library.
#15
Installation help / TGUI MSVC linker errors
Last post by nikodev - 14 January 2026, 14:56:48
Hello. I compiled TGUI as a static library with RAYLIB backend just fine. However, I get 3 unresolved symbols when I try to link it with my application. I am on a Windows environment.

Output:
4>editorInterfaceService.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual __cdecl tgui::RAYLIB::Gui::~Gui(void)" (__imp_??1Gui@RAYLIB@tgui@@UEAA@XZ) referenced in function "public: virtual void * __cdecl tgui::RAYLIB::Gui::`scalar deleting destructor'(unsigned int)" (??_GGui@RAYLIB@tgui@@UEAAPEAXI@Z)
4>aboutWindow.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __cdecl tgui::Texture::Texture(char const *,class tgui::Rect<unsigned int> const &,class tgui::Rect<unsigned int> const &,bool)" (__imp_??0Texture@tgui@@QEAA@PEBDAEBV?$Rect@I@1@1_N@Z) referenced in function "public: __cdecl AboutWindow::AboutWindow(struct Rectangle)" (??0AboutWindow@@QEAA@URectangle@@@Z)
4>..\..\build\windows\x64\debug\editor.exe : fatal error LNK1120: 3 unresolved externals
#16
Feature requests / Re: Porting TGUI to a new oper...
Last post by sgnAudio - 14 November 2025, 10:20:26
wow, thank you. This are great news. Excellent support here. I am a bit busy with the hardware now, but soon I will move to the software side.
#17
Feature requests / Re: Porting TGUI to a new oper...
Last post by texus - 13 November 2025, 20:28:57
I created a minimal example with esp-idf that had the following in the "main" directory.
The test.c file was practically empty and the TGUI sources where copied into main/TGUI.

Code (cmake) Select
# "Enable C++ exceptions" and "Enable C++ run-time type info (RTTI)" must be checked in menuconfig
idf_component_register(SRCS test.cpp
                       INCLUDE_DIRS ".")

set(TGUI_BACKEND "Custom")
set(CMAKE_SYSTEM_NAME "Linux")
set(BUILD_SHARED_LIBS OFF)
set(TGUI_INSTALL OFF)
add_subdirectory(TGUI)

target_link_libraries(${COMPONENT_LIB} PUBLIC TGUI::TGUI)

One change that had to be made in the TGUI sources was to remove the "target_link_libraries(tgui PRIVATE ${CMAKE_DL_LIBS})" line in TGUI/src/CMakeLists.txt.
I imagine that this could cause linking issues later with the code in FileDialogIconLoaderLinux.cpp, so maybe that code might need to be removed later as well.

The "idf.py build" command succeeds like this, and it seems to have compiled TGUI in the process (because it threw a lot of errors initially before I enabled exceptions and RTTI). This is as far as I'll be able to build myself, the next steps will be up to you. But feel free to ask if you encounter specific errors about the TGUI code later.

The TGUI_BACKEND will still have to be changed to use SDL as well once you can get a minimal project running.
#18
Feature requests / Re: Porting TGUI to a new oper...
Last post by sgnAudio - 12 November 2025, 01:00:38
Thanks for your prompt answer.

The C++ compiler supports the C++23 standard with the GNU extensions (-std=gnu++23) by default. The build system is based on CMake to configure the project, manage components, and generate build files for tools like Ninja, which is then used to build the project. The idf.py command-line tool provides a user-friendly interface that manages the CMake build process.

So far so good. Let me try, how far I come with the memory limit.
#19
Feature requests / Re: Porting TGUI to a new oper...
Last post by texus - 11 November 2025, 17:19:04
I honestly have no idea how feasible it is to port it to such system.
If SDL3 already works, then technically it should be possible if you have a working c++17 compiler. I'm more concerned about the available RAM though, TGUI is not optimized at all for low memory usage. So I'm concerned that the gui will use too much RAM for such a system.

Do you know how to cross-compile for the ESP32 with CMake? TGUI relies on CMake as build system, so if CMake is supported when building for ESP32 then it would be significantly easier to port.

The two places that I know that might need changes to OS detection are https://github.com/texus/TGUI/blob/1.x/cmake/Config.cmake#L1 and https://github.com/texus/TGUI/blob/1.x/include/TGUI/Config.hpp.in#L35
Initially I would just define TGUI_SYSTEM_LINUX/TGUI_OS_LINUX and see how far the compilation gets. If you get errors because about missing Linux stuff then you could try looking for workarounds, but if it's POSIX then maybe most just works (TGUI does very little platform-specific things).
#20
Feature requests / Porting TGUI to a new operatin...
Last post by sgnAudio - 11 November 2025, 08:49:05
Dear,

TGUI looks very interesting. What steps would be needed to port it to a new OS? I would like to use it on a ESP32, 32MB Ram, dual 400MHz cores, what has already a somehow POSIX like operating system, based on FreeRTOS, with file system, multi-threading ect, and a SDL 3 port. 

I saw Config.hpp.in, can all modifications made in there? I did not see a porting guide, such a document would be great.

Best regards,
Michael