Skip to content

Using raylib with Cpp

Ray edited this page May 21, 2022 · 5 revisions

This page will go over some of the common questions new users of raylib have when using C++.

How do I use raylib with C++?

raylib works with C++ in the exact same way it does with the C language. You can use raylib from C++ with no special modifications or build steps. Simply include raylib for your compiler and platform in the exact same way you do for C. raylib is fully compatible with both C and C++.

Do I have to use raylib-cpp to use raylib with C++?

No, raylib-cpp is not required to use raylib with C++. raylib-cpp is an optional wrapper that sits on top of the regular C raylib in order to provide object oriented access to raylib. raylib-cpp still calls the same C raylib in the end.

How can I fix C compound-literals related errors?

You can get the folllowing error when building raylib examples in C++ in C++:

A parenthesized type followed by an initializer list is a non-standard explicit type conversion syntax

This type of structure initialization (Vector3){ 1.0f, 2.0f, 3.0f } is called a compound literal and is not supported by C++. Some C++ compilers are strict and will not allow it. This code can be converted to brace initialization in C++ by simply removing the parentheses around the type. Changing the code to Vector3{ 1.0f, 2.0f, 3.0f } will fix the error.

This change needs to be made for code that is pulled from the raylib C examples.

How can I draw my string?

DrawText() takes a const char *text, but I have a std::string in C++; std::string has a method named c_str(), this will return the const char *str stored in the string, use it as the argument for any C function that takes a const char *text. Example:

DrawText(my_string.c_str(),0,0,20,RED);
Clone this wiki locally