/******************************************************************************
Online C++ Compiler.
Code, Compile, Run and Debug C++ program online.
Write your code in this editor and press "Run" button to compile and execute it.
*******************************************************************************/
#include <iostream>
#include "ClassName_API.h"
int main()
{
void* ptr = ClassName_ctor();
unsigned char* arr = NULL;
ClassName_CreateArray(ptr, &arr);
ClassName_Dispose(ptr);
for (int n = 0; n < 26; n++){
cout << "arr[" << n << "] = " << arr[n] << "\n";
}
free(arr);
return 0;
}
#ifndef ClassName_API_H_Include
#define ClassName_API_H_Include
#ifdef WIN32
#ifdef API_EXPORT // must be declared in Preprocessor Definitions
#define API __declspec(dllexport)
#else
#define API __declspec(dllimport)
#endif
#else
#define API
#endif
using namespace std;
extern "C" {
API void* ClassName_ctor();
API void ClassName_Dispose(void* ptr);
API void ClassName_CreateArray(void* ptr, unsigned char** arr);
}
#endif
#ifndef ClassName_HPP_Include
#define ClassName_HPP_Include
#include <iostream>
class ClassName {
public:
ClassName(){}
unsigned char* CreateArray(){
unsigned char* ptr = (unsigned char*)malloc(sizeof(unsigned char)*26);
for (int n = 0; n < 26; n++){
ptr[n] = 65+n;
}
return ptr;
}
~ClassName(){};
};
#endif
#ifndef ClassName_API_C_Include
#define ClassName_API_C_Include
#include "ClassName_API.h"
#include "ClassName.hpp"
void* ClassName_ctor(){
return new ClassName();
}
void ClassName_Dispose(void* ptr){
if (ptr== NULL){return;}
delete ((ClassName*)ptr);
ptr = NULL;
}
void ClassName_CreateArray(void* ptr, unsigned char** arr){
*arr = ((ClassName*)ptr)->CreateArray();
}
#endif