Compatible C++ libraries Questions.

I am trying to construct a cross compatible C++ Libraries platform, and I was wondering if anyone can reply with a set of answers and recommendations.

I wish to assemble a library set. The following listed domains all need to be 64 bit native, and have dual versions for .rpm Linux 64 bit (Fedora) and Windows 10 64 bit.
They need to be native C++, available on both the Windows and Linux platforms, and need to be directly compatible with one another, ideally reified, as applicable.
I am also trying to assemble this library set being financially free, or very nearby, for commercial application use, that are completed as far as their respectives tasks do go.
These libraries all need to be completely documented in English. It can also be the case that one library can be a "meta-library", and can encompass a number of the following
domains, all at once. What do people recommend I choose for the following 10 headings, in relation to these platform requirements, but also in relation to these libraries
exchanging readily between one another?

1) Compiling. I aim to use the TDM Compiler for Windows or Linux, and am prepared to consider g++ for Linux. This problem is solved,hereby.

2) The standard library. Comes with primitive types, Data structures, and File API. This heading is dealt with.Does the standard library have time, ie. count up, count down, and system clock support?

3) An audio lib. Capable of loading, playing, pausing, repeating, maybe fast forward or rewinding to a point in an audio file. Multi audio file format support, mp3 included. Within a standard library thread. What is recommended?

4) A 2D Graphical User Interface library. Widgets, layout, and event support with 2D Graphics drawing and siplay support of major image file formats, likely with the ability to play major video file formats, which is reify compatible with the other libraries here. Am considering wxwidgets for now. Is there anything better, that is free, powerful, complete, maybe easier to use? Or not?

5) A Graphing API, immediately compatible with the 2D GUI library. For 2D or 3D style graphs and data plots to a 2D GUI, or a file. I am considering GNU Plot. What would be best in this total setting?

6) An advanced 3D Graphical User Interface library, that includes Special Effects and other useful advanced options. Needs to be sufficiently comptaible with the 2D GUI library code base. What would be practically ideal?

7) An Arbitrary or High Precision Mathematics library, with all the required options. This is not a problem, as the GMP library will do, or something like TTMATH.

8) A Network or Internet Network library, that allows for Client/Server or Peer/Peer communciation through an ethernet network, the intenet, or both, in secure, non-plain text fashion, an in a directly same or cross OS platform manner. What could I choose?

9) Post compiling protection of code and resourse files for the full application. This may involve payment in the end. What is recommended, for Windows and Linux binaries?

10) Potentially, a C++ Threaded CGI Webserver addon. Like FastCGI. For the Apache HTTPD Webserver. So that web page connection sessions can each communicate with (web)server software, and vice versa. Somewhat similar to .asp or .jsp, but for C++. Hopefully, in a 1 thread/connection manner. Is there anything better, or faster, than FastCGI, for C++?
Last edited on
Wow. You've got your work cut out for you, OP. All I can say is, good luck.
5&6 should be either 1 tick or tied together such that the graphs use the same graphics if possible. that is, 5 should be written in 6.

2) this is likely a mistake. The standard libraries are often optimized for the target platform, and making a cross platform one may do a lot of damage to performance. Yes, chrono's high resolution clock is supposed to be the best available on the system. Count up and count down are easy to write loops if not supported, its just now vs now+something either way. eg t=now()+10sec, while(now < t)... and that is both count up and count down, by the way... the use can see it written as 0, 1, 2, ... 10! or 10, 9, 8, ... 0! simply by arranging the output text. C++ has support for date/time as well.

4) QT?
Last edited on
-I have been aiming to avoid QT to sidestep the commercial payment costs that legally
do have to be involved.

-Is there anyone who watches these forums who can give me an encompassing answer
for all 10 (ten) of my requirements, posted here?
Qt is free for commercial use. What matters is not whether the application is freeware or not, but whether it's open source or not and to which modules it links. Some modules are LGPL (compatible with closed source software) and others are GPL (incompatible).

I'm unclear on what you're trying to accomplish, OP. Do you want to make a supermegalibrary? Some kind of package system for C++? What problem are you trying to solve?
@poweruserm
You seem to seek to compose some sort of incomplete game engine or just "a library engine" of some sort because you mentioned libraries for graphics, audio, networking, UI, math etc..

I'm working on something similar myself but my approach is different in that I focus on single platform (Windows x64) and use as much 3rd party libraries as possible in order to write as few code as possible.

You already have a breakdown of libraries that you want, and what you're missing next is real library names that will must at a minimum accomplish 2 things:
1. be able to glue together, that is work nicely with each other
2. choose libraries that are well maintained and widely used

With enough dedication of your work and time, this is not hard to do, but you make it much harder by saying you want C++ only libraries and cross platform.

If you want high quality end product that you work on you'll have to use libraries written in not only in C++ but also C and assembly, and please focus on single platform unless you work in a team to save your self time. (why? because there are many good libraries written in not a C++)

A few concrete examples of libraries to glue regarding your requested setup:
Widgets, layout, and event support with 2D Graphics drawing and siplay support of major image file formats

1. imgui
2. freeimage

An advanced 3D Graphical User Interface library, that includes Special Effects and other useful advanced options.

There is no such thing as 3D GUI, you probably mean "rendering engine", ex:
1. ogre-next

An Arbitrary or High Precision Mathematics library

1. eigen

You most likely know nothing about these libraries, therefore suggested to make your own build system, preferably with VS because it will allow you to navigate code in an easy manner for learning how to use them.
You can use cmake to generate VS projects for almost any source tree, then simply unify your projects to use same directory tree and build flags.

Once you have the base setup in place your job is to write glue code, that is high level API that makes use of your base libraries (dependencies).

Your glue code can be only C++, meaning your end product can be well designed and easy to use and learn.
This means, a glue code is simply a wrapper around mixture of 3rd party libraries.
Last edited on
I am trying to assemble a native C++ library set where types immediately recognise one another (type compatability) at the level of constructor or function calls, where the two 64 bit operating systems that I want C++ software to work on have their versions of each library, and where the software tasks that I would generally require are all supported. For the sake of a number of projects into the future. I thought it would be wiser to ask other developers what they already know, in these regards, already.

Can anyone address my 10 questions, kindly, please?
to assemble a native C++ library set where types immediately recognise one another

As already said, you need to write glue code and wrapper around 3rd party libraries to achieve this.

and where the software tasks that I would generally require are all supported.

Again, a lot of 3rd party libraries and a lot of glue\wrapper code.

Can anyone address my 10 questions, kindly, please?

I don't think anyone can do that because you have to do some research and trial and error to find out the best setup.
I gave you few examples that I know work well together, but again with a lot of painful work.

where the two 64 bit operating systems that I want C++ software to work on have their versions of each library

Again, very hard (but not impossible) to achieve with only C++.

I thought it would be wiser to ask other developers what they already know

I told you one way it could be done in my previous post.
I am trying to assemble a native C++ library set where types immediately recognise one another (type compatability) at the level of constructor or function calls, where the two 64 bit operating systems that I want C++ software to work on have their versions of each library, and where the software tasks that I would generally require are all supported. For the sake of a number of projects into the future.
What are those other projects you have in mind?
Topic archived. No new replies allowed.