Open source libraries

Explore and use the following open source libraries to add rich features to your app without doing all the work. For instructions on how to use them, visit the provided links.

Boost

Provides a collection of peer reviewed and portable C++ source libraries.

Home page Source location
Boost Boost on GitHub

Box2D

Provides a feature-rich, rigid body, 2-D physics engine for games.

Home page Source location
Box2D Box2D on GitHub

Bullet Physics

Provides a physics engine featuring 3-D collision detection, soft body dynamics, and rigid body dynamics.

Home page Source location
Bullet Physics Bullet Physics on GitHub

Cocos2d-x

Provides a C++ port of the lightweight, multi-platform Cocos2d-x game engine.

Home page Source location
Cocos2d-x Cocos2d-x on GitHub

CouchDB

Provides an Erlang-based port of the Apache CouchDB document-oriented database.

Home page Source location
CouchDB CouchDB on GitHub

CppUnit

Provides a C++ unit testing framework that you can use to determine whether your code is working.

Home page Source location
CppUnit CppUnit on GitHub

Erlang-OTP

Provides a programming language used to build massively scalable, soft real-time systems with requirements for high availability.

Home page Source location
Erlang-OTP Erlang-OTP on GitHub

gameplay

Provides a cross-platform, 3-D native gaming framework that makes it easy to learn and write mobile and desktop games.

Home page Source location
gameplay gameplay project home page

GetOpt

Provides help for shell scripts to parse command-line parameters.

Home page Source location
GetOpt GetOpt on GitHub

Jansson

Provides a C library for working with JSON data.

Home page Source location
Jansson Jansson JSON library on GitHub

JSON_parser

Provides a fast, C-based JSON parser.

Home page Source location
JSON_parser JSON_parser on GitHub

Lua

Provides an embeddable scripting language, combining simple procedural syntax with powerful data-description constructs, based on associative arrays and extensible semantics.

Home page Source location
Lua Lua on GitHub

NME

Provides a game and application framework that targets multiple platforms with the same source code.

Home page Source location
NME NME on GitHub

OpenCV

Provides a computer vision and machine learning library.

Home page Source location
OpenCV OpenCV on GitHub

OpenTTD

Provides a simulation game based on Transport Tycoon Deluxe (TTD).

Home page Source location
OpenTTD OpenTTD on GitHub

PCRE

Provides a set of functions that allows you to use regular expressions using the same syntax and semantics as Perl 5.

Home page Source location
PCRE PCRE on GitHub

Quake 3

Allows you to use a port of the multiplayer, first-person shooter Quake III Arena game engine.

Home page Source location
Quake 3 Quake 3 on GitHub

QuaZIP

QuaZIP is a simple C++ wrapper that can be used to access .zip archives. It uses the Qt toolkit.

  • Platform: C++
  • OS: Mac, Windows
  • API level: 10.0
Home page Source location
QuaZIP QuaZIP on GitHub

The following instructions assume that the QuaZIP library is imported into the same workspace as your project.

  1. Download QuaZIP from GitHub.
  2. Import the project into your workspace. Select Copy Into when importing.
  3. Update your application's .pro file to include the following:
INCLUDEPATH += ../src ../../quazip/src/
LIBS += -lbbsystem
LIBS += -lbbdata
LIBS += -lz

lupdate_inclusion {
    SOURCES += ../assets/*.qml
}

device {
    CONFIG(release, debug|release) {
        DESTDIR = o.le-v7
        LIBS += -Bstatic -L../../quazip/arm/o.le-v7 -lquazip -Bdynamic
    }

    CONFIG(debug, debug|release) {
        DESTDIR = o.le-v7-g
        LIBS += -Bstatic -L../../quazip/arm/o.le-v7-g -lquazip -Bdynamic 
    }
}

simulator {
    CONFIG(release, debug|release) {
        DESTDIR = o
        LIBS += -Bstatic -L../../quazip/x86/o-g/ -lquazip -Bdynamic 
    }

    CONFIG(debug, debug|release) {
        DESTDIR = o-g
        LIBS += -Bstatic -L../../quazip/x86/o-g/ -lquazip -Bdynamic
    }
}

The following sample demonstrates using QuaZIP to extract a .zip file to the shared downloads directory. The sample requires the Shared Files permission in order to write to the downloads directory. The sample also requires you to use the following import statement: #include "../quazip/src/quazipfile.h"

bool ApplicationUI::extractArchive(QString m_filename) {
    
    // Check if file exists
    QFile file(m_filename);
    if (!file.exists()){
        qDebug() << "File does not exist.";
        return false;
    }

    bool result = true;
    QuaZip *m_zip = new QuaZip(m_filename);

    QString dataFolder = QDir::currentPath();
    QString bookname = m_filename.split("/").last().split(".").first();

    QString dest = dataFolder + "/shared/downloads/" + bookname;
    QDir dir(dest);
    if (!dir.exists()) {
        dir.mkpath(".");
    }

    qDebug() << "destination folder: " + dest;

    m_zip->open(QuaZip::mdUnzip);

    if (!m_zip) {
        return false;
    }

    QuaZipFile *currentFile = new QuaZipFile(m_zip);
    int entries = m_zip->getEntriesCount();
    int current = 0;

    for (bool more = m_zip->goToFirstFile(); more; more = m_zip->goToNextFile()) {
        ++current;
        // If the entry is a path ignore it 
        // Path existence is ensured separately
        if (m_zip->getCurrentFileName().split("/").last() == "")
            continue;

        QString outfilename = dest + "/" + m_zip->getCurrentFileName();
        QFile outputFile(outfilename);
        // Make sure the output path exists
        if (!QDir().mkpath(QFileInfo(outfilename).absolutePath())) {
            result = false;
            qDebug() << "[ZipUtil] creating output path failed for:" << outfilename;
            break;
        }

        if (!outputFile.open(QFile::WriteOnly)) {
            result = false;
            qDebug() << "[ZipUtil] creating output file failed:" << outfilename;
            break;
        }

        currentFile->open(QIODevice::ReadOnly);
        outputFile.write(currentFile->readAll());
        if (currentFile->getZipError() != UNZ_OK) {
            result = false;
            // Emit logItem(tr("Error during Zip operation"), LOGERROR);
            qDebug() << "[ZipUtil] QuaZip error:" 
                    << currentFile->getZipError() 
                    << "on file" << currentFile->getFileName();
            break;
        }
        currentFile->close();
        outputFile.close();
    }

    return result;

}

RecastNavigation

Allows you to use the Recast mesh construction toolset for games.

Home page Source location
RecastNavigation RecastNavigation on GitHub

SBuilder

SBuilder is a tool for browsing and editing SQLite databases.

Home page Source location
Not available SBuilder on GitHub

SDL

Provides a standard mechanism for accessing multimedia using Simple DirectMedia Layer (SDL), which is a cross-platform multimedia library that's designed to provide low-level access to audio, keyboard, mouse, joystick, 3-D hardware (using OpenGL), and 2-D video framebuffers.

Home page Source location
SDL SDL on GitHub

Skia

Provides a complete 2-D graphics library for drawing text, geometries, and images.

Home page Source location
Skia Skia on GitHub

SpiderMonkey

Provides access to the Mozilla GitHub engine, written in C/C++.

Home page Source location
SpiderMonkey SpiderMonkey on GitHub

V8

Provides a JavaScript engine to use in app development.

Home page Source location
V8 V8 on GitHub

Related resources

Last modified: 2015-05-07



Got questions about leaving a comment? Get answers from our Disqus FAQ.

comments powered by Disqus