Надеюсь тут есть люди знакомые с плюсами.
Столкнулся с не понятными, для меня, определениями параметров в функции

Код:
RVExtensionRegisterCallback(int(*callbackProc)(char const *name, char const *function, char const *data))

и как подобное реализовать на пурике хз(

это вроде рабочий пример DLL, которуя в пытаюсь реализовать на пурике

Код:
#include <thread>
#include <string>
#include <chrono>

extern "C"
{
	__declspec (dllexport) void __stdcall RVExtensionRegisterCallback(int(*callbackProc)(char const *name, char const *function, char const *data));
	__declspec (dllexport) void __stdcall RVExtension(char *output, int outputSize, const char *function);
}

int(*callbackPtr)(char const *name, char const *function, char const *data) = nullptr;

void __stdcall RVExtensionRegisterCallback(int(*callbackProc)(char const *name, char const *function, char const *data))
{
	callbackPtr = callbackProc;
}

void __stdcall RVExtension(char *output, int outputSize, const char *function)
{
	if (!callbackPtr)
    return;

	std::thread ([](std::string fnc)
	{    
    using namespace std::chrono_literals;
    fnc = "[1,2,3," + fnc + "]";

    for (int i = 1; i < 4; ++i) // run 3 times
    {
    	std::this_thread::sleep_for(2s); // sleep for 2 seconds
    	callbackPtr("test_callback", ("fncToExecute_" + std::to_string(i)).c_str(), fnc.c_str());
    }

	}, function).detach();
}