#include <iostream>
#include "zlib.h"
extern "C" void JDCZlibInitialize()
{
}
extern "C" bool JDCZlibCompress(char* source, int64_t* resultAddress, int64_t* resultSize)
{
char* bytes = new char[strlen(source)];
uLong ucompSize = strlen(source) + 1;
uLong compSize = compressBound(ucompSize);
compress((Bytef *)bytes, &compSize, (Bytef *)source, ucompSize);
*resultAddress = *(int64_t*)(&bytes);
*resultSize = strlen(bytes);
return true;
}
extern "C" long JDCZlibDeCompress(unsigned char source[], int length)
{
char* message = new char[length];
uLong ucompSize = length + 1;
uLong compSize = compressBound(ucompSize);
uncompress((Bytef *)message, &ucompSize, (Bytef *)source, compSize);
return *(long*)(&message);
}
int main()
{
return 0;
}
bool someFunction(int64_t* num)
{
cout << num << endl;
return true;
}
num = (int64_t*)(1);
int64_t* a = (int64_t*)(1);
num = (int64_t*)(&a);
int a = 1;
num = (int64_t*)(&a);
#define sizeof_var( var ) ((size_t)(&(var)+1)-(size_t)(&(var)))
extern "C" bool __declspec(dllexport) someFunction(std::string source, int num, int num2) {
std::vector<char> bytes(source.begin(), source.end());
bytes.push_back('\0');
char *c = &bytes[0];
num = (long)(&c); // здесь ошибка:
// Необработанное исключение: System.AccessViolationException: Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена.
num2 = sizeof_var(c);
return true;
}