Я хочу назвать эту функцию c++ программой C. Я хочу использовать char * errorMessage, чтобы вернуть сообщение об ошибке. Когда я возвращаю errorMessage в код, я получаю указатель char в моем приложении C после возврата. Но если я пытаюсь errorMessage = SafeStringHeap(string("File name was empty."));
Я всегда получаю Null Pointer в своем приложении C.
Я попытался вызвать свою функцию со следующим текстом в приложении c:
char* errorMessage = NULL;
TAFMessage = (*TAFParseMessageFile)(NULL, errorMessage);
Функции:
static char* SafeStringHeap(string message)
{
//Save string on the heap
char * cstr = new char[message.length() + 1];
strcpy_s(cstr, message.length() + 1, message.c_str());
return cstr;
}
extern "C" __declspec(dllexport) const char* TAFParseMessageFile(const char* fileName, char* errorMessage)
{
if (fileName == NULL)
{
errorMessage = SafeStringHeap(string("File name was empty."));
return errorMessage;
}
return NULL; // TODO: set errorMessage
}
С учетом других проблем, поднятых выше. Попробуйте изменить аргумент errorMessage на char ** (указатель на указатель char), а затем выполните:
*errorMessage = SafeStringHeap(...)
И при вызове функции pass & errorMessage