RasterProcessTool/GPUBaseLib/GPUTool/GPUBaseTool.cpp

57 lines
1.1 KiB
C++

#include "GPUBaseTool.h"
// »ñÈ¡Îļþ´óС
extern "C" size_t getfsize(FILE* fp)
{
fseek(fp, 0L, SEEK_END);
size_t size = ftell(fp);
fseek(fp, 0L, SEEK_SET);
return size;
}
extern "C" unsigned char* loadBinFromPath(char* binPath, size_t* binpath_len)
{
FILE* fd = fopen(binPath, "rb");
if (NULL == fd)
{
perror("Failed to open file");
return NULL;
}
size_t f_len = getfsize(fd);
*binpath_len = f_len;
unsigned char* buffer = (unsigned char*)malloc(f_len * sizeof(unsigned char));
if (buffer == NULL)
{
perror("Failed to allocate memory");
fclose(fd);
return NULL;
}
size_t fread_count = fread(buffer, 1, f_len, fd);
fclose(fd);
if (fread_count != f_len)
{
releaseVoidArray(buffer);
return NULL;
}
return buffer;
}
extern "C" void writeComplexDataBinFile(char* dataPath, size_t datalen, cuComplex* data)
{
FILE* pd = fopen(dataPath, "w");
double* tempdata = (double*)malloc(datalen * 2 * sizeof(double));
for (long i = 0; i < datalen; i++)
{
tempdata[i * 2 + 0] = data[i].x;
tempdata[i * 2 + 1] = data[i].y;
}
fwrite(tempdata, sizeof(double), datalen * 2, pd);
fclose(pd);
}