Ну, во первых static функции станут приватными и их не будет видно вне файла
Во вторых extern "C" {} надо использовать на хедерах
#ifndef HSLOCAL_INCLUDED
#define HSLOCAL_INCLUDED
#include <stdio.h>
#include <string.h>
#include <limits.h>
#include <hs/hs.h>
#include <errno.h>
extern "C" {
char *readInputData(const char *inputdata, unsigned int *length);
}
#endif //HSLOCAL_INCLUDED
#include "hslocallib.h"
char *readInputData(const char *inputdata, unsigned int *length) {
FILE *file = fopen(inputdata, "rb");
if (!file) {
fprintf(stderr, "Невозможно прочитать файл \"%s\": %s\n", inputdata,
strerror(errno));
return NULL;
}
if (fseek(file, 0, SEEK_END) != 0) {
fprintf(stderr, "Невозможно определить конец файла \"%s\": %s\n", inputdata,
strerror(errno));
fclose(file);
return NULL;
}
long dataLen = ftell(file);
if (dataLen < 0) {
fprintf(stderr, "Невозможно вернуть положение указателя в файле %s\n", strerror(errno));
fclose(file);
return NULL;
}
if (fseek(file, 0, SEEK_SET) != 0) {
fprintf(stderr, "Невозможно найти начало файла \"%s\": %s\n", inputdata,
strerror(errno));
fclose(file);
return NULL;
}
char *inputData = malloc(dataLen);
if (!inputData) {
fprintf(stderr, "Невозможно выделить память для входных данных\n");
fclose(file);
return NULL;
}
char *ptrInputData = inputData;
size_t bytesLeft = dataLen;
while (bytesLeft) {
size_t bytesRead = fread(ptrInputData, 1, bytesLeft, file);
bytesLeft -= bytesRead;
ptrInputData += bytesRead;
if (ferror(file) != 0) {
fprintf(stderr, "Ошибка чтения файла\n");
free(inputData);
fclose(file);
return NULL;
}
}
fclose(file);
*length = (unsigned int)dataLen;
return inputData;
}