Frage

Wie lautet die Spezifikation von CC_DLL in dieser Zeile " Klasse CC_DLL CCSize " in Cocos2d-x.
Jede Klasse in cocos2d-x Definiere so -> Klasse ..... Klassenname
Es schafft Verwirrung für mich.Bitte helfen Sie mir.

Danke,

War es hilfreich?

Lösung

Es handelt sich wahrscheinlich um eine Präprozessordefinition, die das Modul anweist, die Klasse entweder zu exportieren oder zu importieren.

So etwas wie:

#ifdef BUILDING_COCOS
#define CC_DLL _declspec(dllexport)
#else
#define CC_DLL _declspec(dllimport)
#endif

Beim Verknüpfen mit der Bibliothek ist BUILDING_COCOS nicht definiert, daher bedeutet CC_DLL _declspec(dllimport), der dem Compiler mitteilt, dass die Klasse in eine Binärdatei exportiert wird.

Andere Tipps

Ich gehe davon aus, dass CC_DLL ungefähr so definiert ist (unter Verwendung der MSVC-Intrinsics-Syntax):

#ifdef CC_IS_IMPLEMENTATION /* or CC_IS_DLL_COMPILATION or something like that */
#define CC_DLL __declspec(dllexport)
#else
#define CC_DLL __declspec(dllimport)
#endif

Hierfür wird eine einzelne Definition verwendet, die die Klasse entweder in eine DLL exportiert oder daraus importiert, je nachdem, ob die API von einem Benutzer oder von der Implementierung selbst verwendet wird.Die Implementierung (.cpp-Datei) würde dann ungefähr so aussehen:

// .cpp file
#define CC_IS_IMPLEMENTATION
// CC_DLL is now defined to __declspec(dllexport)
#include "myapi_stuff.h"

// implement it...

Wenn ein Bibliotheks- / DLL-Benutzer diese API (Klasse) verwendet, wird sie als __declspec(dllimport) definiert, um die Implementierung aus einer DLL zu importieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top