2024-07-17 6:37 AM - edited 2024-07-17 7:40 AM
Hello!
Our project is supposed to use C++17 features.
When linking C++17 compiled objects against TouchGFX Designer's distributed binaries (eg: touchgfx_core.a), linkage fails, because the touchgfx binaries appear to be compiled against the c++14 standard, not c++17.
Compiling with IAR 9.30.1, having the C++17 compiler flag ("libc++" in IAR parlance) set, the following error is thrown during linkage.
Error[Li009]: runtime model conflict: Module ListLayout.o(touchgfx_core.a) specifies that '__CPP_Library' must be 'DLib', but module [hidden-name].o has the value 'libc++'
We are using TouchGFX 4.23.2 which according to the date of this post by ST Employee @LouisB, we should have no issue linking its objects against C++17 objects compiled by IAR.
However, when inspecting the distributed binary from ST (TouchGFX\4.23.2\touchgfx\lib\core\cortex_m7\IAR9.x\touchgfx_core.a), we can clearly see that it was compiled with C++14, and not C++17:
__CPP_Exceptions.Disabled __CPP_Language.C++14 __CPP_Library.DLib __CPP_Runtime.1 __SystemLibrary.DLib __dlib_version.6
Perhaps the wrong binaries were distributed with this release of touchgfx?
Solved! Go to Solution.
2025-06-19 1:41 AM
Yes, indeed, I'm talking about IAR specifically ;)
2025-06-19 2:00 AM
I see, very Unfortunate. Try 4.25.0.
2025-06-20 2:07 AM
I'm already working with 4.25.0 sadly…