# SoftBank Robotics documentation What's new in NAOqi 2.8?

# Deprecated C++ SDK

See also

New qi C++ SDK | C++ SDK - Tutorials | C++ Examples | Deprecated C++ SDK | C++ Tips and tricks | Debugging C/C++ on the robot

## What is the C++ SDK for

- Develop with your favorite IDE: Visual Studio, QtCreator, Eclipse or XCode.
- Use the NAOqi framework on your PC. You can run the NAOqi executable on your platform, and use it with a simulator, or you can use the framework to write software which communicates with your robot.
- On Linux and Mac, you can cross-compile libraries to embed in SoftBank Robotics robots.

## C++ SDK specificities

Please make sure to have read the Key concepts section first.

Additionaly, there are a few things that are C++ specific, one key difference is that there are two types of proxies:

- Specialized proxies. They correspond to SoftBank Robotics features, such as ALMotion, ALTextToSpeech, ALVideoDevice etc. These proxies are optimized, efficient and easy to use: once created, they give direct access to already existing methods. Always prefer this kind of proxy to generic proxies if it exists for a desired module - in addition to being optimized, they give you compile-time type checking, which helps you see problems earlier.

      #include <alproxies/altexttospeechproxy.h>

      const std::string phraseToSay = "Hello world";
      AL::ALTextToSpeechProxy tts("nao.local" , 9559);
      tts.say("Hello world");

- Generic proxies. They give access to any module including the ones which also have specialized proxies. The generic proxy has no information about the methods which are bound to these modules, contrary to specialized proxies. This means that the user must specify himself the name and parameters of the methods: if there is a mistake somewhere, it will raise an exception during execution. This kind of proxy is slower and more error-prone, but very flexible since it can adapt to any module. For user-created modules that have no specialized proxy, this is your only choice.

      #include <alcommon/alproxy.h>
      #include <alcommon/albroker.h>

      const std::string phraseToSay = "Hello world";
      boost::shared_ptr<AL::ALBroker> broker =
        AL::ALBroker::createBroker("MyBroker", "", 0, "nao.local", 9559);
      AL::ALProxy proxy(broker, "ALTextToSpeech");
      proxy.callVoid("say", phraseToSay);

      // Or, if the method returns something, you
      // must use a template parameter
      bool ping = proxy.call<bool>("ping");

- ALValue Most of the methods will return simple POD objects, but some of them may return a variant object of type ALValue.

  Please read the libalvalue API reference for more details.

## Installation

Please read the C++ SDK - Installation Guide section.

## Samples and tutorials

It is recommended that you use qiBuild to build your projects.

Please make sure to also read the Local modules section.

## Reference documentation

- C++ library APIs
- Debugging C/C++ on the robot

Glossary Site map Index Support Contact Legal Notices