C++ used to be the world’s number one development language for “business applications,” but it has lost its crown to Java for years. Because of today’s business application types, there has been a rapid shift from desktop applications to Web applications. When Java prevailed, MS made a sudden effort to come up with C# language. There were a large number of C++ programmers who thought C++ was going to die. Unexpectedly, in the past three years, the vitality of C++ was suddenly seriously enhanced. The main reasons are the emergence of open source software, basic software (such as concurrent native support, such as the inevitable native SDK for Android), and various cross-platform applications.

 

Open source C++ libraries must have the following characteristics: they must be mature products, cross-platform products, and relatively generic libraries.

 

 

I. General standard classes

STL: C++ standard template library, well, it is also open source.

Boost: the C++ quasi-standard library is a powerful one.

——- If master, will run the world.

       

Deelx, boost has a great regular expression parsing library, but if you just want one expression parsing and don’t want to drag along the massive Boost library… Support domestic products.

Iconv/iconVPp: (C form encoding conversion function library,

 

XML parsing library

There are quite a few XML-related libraries in C++, but most of them are actually C libraries, which are not very portable to use. The DOM-based one is TinyXml, and the SAX-based one is of course Xerces. The former is compact, fast, easy to use, suitable for data exchange. The latter is a full-featured XML parser.

I prefer TingyXml. Small!

Xerces-c: the most powerful XML parsing library, not only in open source libraries, but also in commercial ones. Of course, its variant, the one IBM is selling for money, has hundreds of megabytes more to support cross-country coding and is more powerful, but I think it’s enough to have the small, open source IconV up front?

According to the blogger a blog at http://www.cnblogs.com/wuqi924/archive/2010/11/18/1880950.html

SlimXml, TinyXml and RapidXml are compared as follows:

Parsing this 33,000-line, 1.5-megabyte XML took each of the three libraries

  • SlimXml: 22ms
  • TinyXml: 54ms
  • RapidXml: 4ms!

It turns out that RapidXml is really tough, and is actually over five times faster than SlimXml.

The good news is that SlimXml is still 2.5 times faster than TinyXml without much focus on efficiency. SlimXml is a simple and compact route, the source code is only 32K, while TinyXml and RapidXml source code is 147K and 141K respectively, with such efficiency can be satisfied. Because the library is still focused on dozens or hundreds of lines of small files, parsing particularly large XML is out of my reach.

 

Irrlicht (Ghost Engine) irrXMl parser.

XSD (binding tool for XML and C++ data structures). (Commercial use costs money)

Iii. Database

I prefer OTL (for connecting to databases). I haven’t used the others

 

 

4. Multimedia

— Excerpt elsewhere, myself, never used

SDL (Simple DirectMedia Layer/ Multimedia Direct Access Layer for game programming).

The corresponding C open source libraries are FFMPEG, MPEG4, AAC, AVC, libmad, Mpeg1, FLAC, AC3, AC3, Matroska

 

Five, network development classes

1, gSOAP SOAP protocol C++ support library and code generation tools.

 

2. First choice for ACE network programming research. ACE is suitable for research, but it is inefficient in large-scale network programming. There is almost no use of ACE in large-scale online games, and many projects that use ACE have also been proved to be inefficient.

In addition to ACE, there are many libraries for system and network programming. On the thread library side, for example, there are ZThreads, Boost :: Threads, if you zoom into the C/C++ space, APR, and CII. Boost also has components for file and directory operations, socket++ for network programming, and boost::asio, a future C++0X will almost certainly have a network programming and a threading library. For now, however, ACE remains the preferred choice for systems and high performance network programming, and will remain so for some time. It is not only a useful library, frameset, but also a good example of the application of design patterns, which is well worth learning.

3. Some bloggers reply to POCO. My arrangement is as follows:

The open source C++ library, called POCO (POrtable COmponents), is very easy to use.

Features:

* thread, Program synchronization and multithreaded programming Advanced abstractions * Streaming and file system access * Shared libraries will load classes * powerful logging and error reporting * Security and encryption * Network programming (TCP/IP sockets, HTTP clients and HTTP servers, FTP, SMTP, POP3, Etc.) * XML parsing (SAX2 and DOM) and generation * Configuration files and options processing * SQL database access (ODBC, MySQL, SQLite)

Platforms that can run include:

 * Windows

* Mac OS X

* iPhone OS

* (embedded) Linux

* HP-UX

* Tru64

* Solaris

* QNX

Six, the GUI library

BCG Windows platform under the interface design of the third party library, you can make the interface more beautiful, more sense of the generation.

 

WxWidgets: With wxWidgets, developers can develop applications for Win32, Mac OS X, GTK+, X11, Motif, WinCE, and more based on the same set of code. The wxWidgets library can be used by development languages such as C++, Python, Perl, and C#/.NET. Unlike other GUI development tools that also support cross-platform development, wxWidgets apps have a truly localized look and feel – because wxWidgets use controls native to the platform, rather than simply simulating them with textures. WxWidgets are widely available, free, open source, and mature.

QT————- interface (GUI) development, support C++/Java/Python/… Multiple languages. Cross-platform. The main benefit is that the API is beautiful! Qt itself doesn’t just do GUI programming, in fact it can do almost anything os-API can do. Like network/database /OpenGL/… Both provide perfect support.

Qt has traditionally been regarded as a portable GUI library, but in fact Qt is now a relatively complete portable application framework, containing a large number of tools, such as regular expressions, Web and Socket classes, 2D and 3D graphics, XML parsing, SQL classes, and even a complete container class library. But the trump card is the GUI. Qt is the most mature of the current cross-platform GUI frameworks and is already being used in key products by some large companies. Trolltech’s Dual license model for Qt allows the product to gain support from the open source community and make enough commercial money to be confident about its prospects. Qt’s main technical feature is its meta-object model. Qt does not actually use standard C++, but rather an extension of it. It implements the well-known signal/ Slot mechanism, which is Qt’s greatest feature and strength, via extensions to the meta-object model. Other portable GUI frameworks similar to Qt include wxWidget, FOX, etc

6. Computer vision

OpenCV, Intel’s own open source library. Supports C/C++/Python interfaces. This interested friend can play. If combined with OpenCV, you can make programs that are cool to the layman. For example, use its facial recognition function to process your camera, judge people’s movements, etc

Graphics and image processing

GDAL, processing large images. If you are a GIS professional, you will be able to use very large TIF images and several GIGABytes of aerial images. GDAL is great for reading and writing large images (like multiband images). Support for c + + / Java/Python…

The foreign open source GIS software QGIS uses GDAL

C graphics image library more, libjpeg, libpng, zlib, TIFF, JBIG, the most famous open source image processing software Cximage

C/C++ memory management is an eternal topic. In general, C++ developers tend to manage memory themselves. However, to the surprise of many C++ developers, some C++ leaders have recently declared that it is very difficult to write large, secure programs in C++ without automatic memory management. Bjarne Stroustrup has also advised Chinese developers to use automatic memory management tools in large projects if there is no specific reason. Therefore, C++ developers today should actively learn and apply automatic memory management facilities. When it comes to automatic memory management, the lighter option is Boost ::smart_ptr, while the more radical option is to introduce a full GC mechanism. Currently, hans-Boehm GC is the most reliable open source GC. As a conservative GC, hans-Boehm GC is superior in terms of performance and functionality. In particular, with this GC, you can still delete and free to manage your own memory, which is less of a shock to our programming habits.

Password and security: OpenSSL security is an unavoidable and important problem for C/C++ programming today. However, writing secure applications, especially network-related C/C++ applications, is very difficult. It can be said that the industry as a whole is still in the “early stages” of this process. In particular, it involves a large number of algorithms and norms related to security and cryptography. If developers are allowed to explore by themselves, the workload and difficulty have reached an unrealistic degree. Therefore, it is possible to improve program security by relying on reliable related program libraries. In this regard, OpenSSL is by far the best choice, and its comprehensive and reliable content has become an industry benchmark. However, due to the inherent complexity of secure programming, even with penSSL, development can be tedious. So we hope to see simpler and more usable C/C++ security libraries soon.

Since 1995, C++ has made great breakthroughs in the field of scientific computing. This is mainly due to the advanced application of template technology, making C++ in the performance of scientific computing has made great progress, a large number of excellent C++ scientific computing library emerged. Such as Blitz++, POOMA, MTL, Boost::uBLAS. Among them, MTL stands out in terms of feature richness, performance, development support and maturity, so it is a priority. Notably, MTL, in conjunction with KAI C++, which was later acquired by Intel, beat FORTRAN in a performance test in 2002.

Xi. Middleware

1. Distributed Object Middleware: ICE ICE is a late comer in the distributed object middleware space and can be roughly considered an “improved” VERSION of CORBA. It is being used in some major projects, including the Next Generation Army Combat System, which is being developed by Boeing. A particular value of ICE is the exemplar significance of its code. Because ICE came late, developers systematically applied the new C++ programming style, making it a good target for reading C++ code.

2. Message middleware: ZeroMQ, summarized as follows:

1) It is almost the most concise messaging system, just a concise API, binding n languages, no dedicated server; 2) Excellent performance, much higher than RabbitMQ, ActiveMQ, MSMQ, etc. 3) Suitable for distributed and concurrent applications.

Regular expressions are one of the most powerful tools in programming. C++ regular expression support has long been a weak spot. The initial solution to this problem came in boost around 2001 with the regex library. But the original Regex had problems with efficiency and reliability, and was later upgraded to a more complete state after a major renovation. Other alternatives include C’s PCRE library and Qt’s QRegExp class.

Configuration Management: Lua As software systems become more and more complex, more and more requirements for configurable software are put forward. Systems that have traditionally been configured only through command-line arguments may now require more and more methods and mechanisms. An increasingly popular and proven practice is to embed Lua in C/C++ programs and use Lua programs as configuration scripts. The advantage of this approach is that the Lua language is powerful and flexible enough to accommodate complex configuration requirements. At the same time, Lua is easy to embed C/C++ programs, and the compilation and execution speed is very fast, can be said to be a good solution to the C/C++ program configuration management problem.

14. 3D Game Engine:

1. Irrlicht irrlicht.sourceforge.net/

It started in 2003 and was named the best Open source game engine the following year. C++ and. Net, extended language bindings include Java, Perl, Ruby, Python. Cross-platform support, using D3D,OpenGL and its own API.

Advantages: Easy to use; Cross-platform; Built-in XML parser; A large community;

Cons: Development has slowed recently

 

2. Panda3D www.panda3d.org/

Developed by Disney and supported by the Carnegie Mellon Entertainment Technology Center. Python is the official recommended language. C++ is also supported.

Pros: Useful community; A large number of functions; Regular development;

Disadvantages: Lack of tool support; Poor documentation;

3. OGRE www.ogre3d.org/

One of the best graphics engines in the world. It was created in 2000. C++ is recommended. You need to be very familiar with programming. Not for beginners.

Pros: Lots of features; Excellent documentation; Large-scale communities; Active development

Weaknesses: not suitable for the first brother; Just the graphics engine

4. The Crystal Space www.crystalspace3d.org/main/Main_P…

An open source game engine written in C++. C++ is recommended

Pros: Good community support; A large number of functions;

Disadvantages: difficult to learn;

5, Delta3d http://www.delta3d.org/index.php

Delta3D is a full-featured game and simulation engine developed by the Naval Postgraduate School, with significant support and investment from the US military. The engine is used in a wide range of applications, such as developing modeling and simulation software for training, education, entertainment and scientific computing visualization.

Its standardized design combines well-known Open source software and engines such as Open Scene Graph(OSG), OpenDynamicsEngine (ODE), Character Animation Library (CAL3D), And OpenAL is integrated. Delta3D hides and encapsulates these underlying modules and integrates them together to form a more convenient high-level API library, enabling developers to use the underlying functions for secondary development when necessary. Delta3D is in the Middle layer of the software family.

Advantages: Suitable for all kinds of 3D games, simulation, very comprehensive. It’s always updated.

Disadvantages: less reference materials. There are also fewer Chinese documents. There are few official references. But reading source code can speed up understanding and application.

Tips: Currently, I’m working on the Delta open source engine and developing a small game with it.

By the way play an advertisement: Delta3D communication QQ group: 12483772. Welcome to join us.