Fix example plugin instructions not compiling

This commit is contained in:
UnknownShadow200 2021-10-10 20:09:31 +11:00 committed by GitHub
parent 93d47a9e0c
commit 28893886d4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -21,7 +21,8 @@ Or in other words, in a directory somewhere, you have a file named ```TestPlugin
### Basic plugin ### Basic plugin
```C ```C
#include "src/Chat.h" #include "src/Chat.h"
#include "src/GameStructs.h" #include "src/Game.h"
#include "src/String.h"
static void TestPlugin_Init(void) { static void TestPlugin_Init(void) {
cc_string msg = String_FromConst("Hello world!"); cc_string msg = String_FromConst("Hello world!");
@ -35,10 +36,7 @@ Here's the idea for a basic plugin that shows "Hello world" in chat when the gam
### Basic plugin boilerplate ### Basic plugin boilerplate
```C ```C
#include "src/Chat.h" #ifdef _WIN32
#include "src/Game.h"
#ifdef CC_BUILD_WIN
#define CC_API __declspec(dllimport) #define CC_API __declspec(dllimport)
#define CC_VAR __declspec(dllimport) #define CC_VAR __declspec(dllimport)
#define EXPORT __declspec(dllexport) #define EXPORT __declspec(dllexport)
@ -48,6 +46,10 @@ Here's the idea for a basic plugin that shows "Hello world" in chat when the gam
#define EXPORT __attribute__((visibility("default"))) #define EXPORT __attribute__((visibility("default")))
#endif #endif
#include "src/Chat.h"
#include "src/Game.h"
#include "src/String.h"
static void TestPlugin_Init(void) { static void TestPlugin_Init(void) {
cc_string msg = String_FromConst("Hello world!"); cc_string msg = String_FromConst("Hello world!");
Chat_Add(&msg); Chat_Add(&msg);
@ -62,16 +64,17 @@ All plugins require this boilerplate, so feel free to copy and paste it.
--- ---
### Writing plugins in C++ ### Writing plugins in C++
When including game headers, they must be surrounded with `extern "C"`, i.e. When including headers from ClassiCube, they **must** be surrounded with `extern "C"`, i.e.
```C ```C
extern "C" { extern "C" {
#include "src/Chat.h" #include "src/Chat.h"
#include "src/Game.h" #include "src/Game.h"
#include "src/String.h"
} }
``` ```
Otherwise you will get obscure `Undefined reference` errors when compiling. Otherwise you will get obscure `Undefined reference` errors when compiling.
Exported plugin functions must be surrounded with `extern "C"`, i.e. Exported plugin functions **must** be surrounded with `extern "C"`, i.e.
```C ```C
extern "C" { extern "C" {
EXPORT int Plugin_ApiVersion = 1; EXPORT int Plugin_ApiVersion = 1;