Возврат файлового потока из C++ dll в Centura Team Developer

Я нашел библиотеку C/C++ QRCode и хочу использовать ее как .dll. Одна функция, называемая просто "qrcode", имеет char szSourceString[], char OUT_FILE[] в качестве параметров. SourceString — текст для преобразования, а OUT_FILE — имя файла. Эта функция записывает .bmp.
В Gupta/Centura Team Developer 5.2, где мне нужно использовать .dll, мне нужно передать эти параметры как "LPSTR". Вышеупомянутое работает нормально, но я ищу способ вернуть файловый поток вместо записи .bmp, который мне нужно снова открыть в Centura для дальнейшей обработки.

В библиотеке C++ файл записывается так:

if (!(fopen_s(&f, OUT_FILE, "wb")))
        {
        fwrite(&kFileHeader, sizeof(BITMAPFILEHEADER), 1, f);
        fwrite(&kInfoHeader, sizeof(BITMAPINFOHEADER), 1, f);
        fwrite(pRGBData, sizeof(unsigned char), unDataBytes, f);

        fclose(f);

Я хочу вернуть unsigned char*pRGBData туда, где я его называю из Centura. Я понятия не имею, как это сделать/какой тип данных использовать. Я попытался преобразовать pRGBData в std::string и вернуть его, но при вызове функции из Centura происходит сбой. Я не знаю, будет ли само преобразование работать нормально или оно просто вылетает из-за того, что я выбрал неправильный тип данных. Как Centura-"String" я могу передать "HARRAY HSTRING,LPSTRING, LPCSTR, LPCWSTR, LPVOID, LPWSTR". Может ли кто-нибудь помочь мне здесь, пожалуйста?


person user3884424    schedule 30.07.2014    source источник
comment
Ваш вопрос неясен, вы хотите вернуть файловый поток или что-то еще, на что указывает pRGBData?   -  person user657267    schedule 30.07.2014
comment
При чтении текста вам не нужен файловый поток, вам нужны необработанные данные изображения. Также обратите внимание, что даже если вам удастся его получить, он уже был записан в файл, поэтому, если вы хотите обработать данные изображения, а затем записать их в файл, вам придется либо перезаписать данные в правильном месте, включая возможные изменения заголовков или переписывание кода библиотеки, чтобы не записывать в файл, а вместо этого иметь функцию, которая создает данные и возвращает их вам, и отдельную функцию, которая фактически записывает данные в файл.   -  person Some programmer dude    schedule 30.07.2014
comment
Извините за неясный вопрос. Мне нужны данные изображения. Я могу переписать код, чтобы он возвращал мне данные, не записывая их. Моя проблема в том, что я не знаю, как его вернуть. Могу ли я написать что-нибудь простое, например return pRGBData ? Но тогда какой тип данных я должен использовать на стороне Centura?   -  person user3884424    schedule 30.07.2014


Ответы (1)


Верните его в виде массива байтов и используйте Receive String LPCSTR в Gupta.

person Thomas Uttendorfer    schedule 29.08.2014