Вызов функции из dll. С++

программирование windows C++ dll

Добрый вечер. Имеется библиотека на делфи. Функцию определяю так
typedef bool (__stdcall *MyFun)(std::wstring &res);

Работает нормально, в res я получаю строку, однако после этого программа падает и в консоль пишет код ошибки -1073741819.
Я так понимаю проблема связана с памятью. Как это можно решить?
Компилятор MinGW.

Примечание:
В документации сказано, что там WideString, поэтому использую wstring, а отладчик ( gdb ) не дает мне вызвать эту функцию, ругается на память. Пишут, что это связанно с тем, что в gdb для программы и dll используются разные кучи.

Примечание:
инициализировал отправляемую строку 6 символами, все работает без ошибок. Почему так? Выход ли это из ситуации?

Примечание:
Я использую qt и mingw, BSTR тип есть, но ему не хватает библиотеки из VS. Может можно как-то иначе решить?
Ответы:
пройди с дебагером с дизассембли (и посмотри) сохраняется ли стэк (то есть при выходе из функции стэк ESP должен остаться таким же как он был). К тому же ты уверен что дельфи тебе возвращает объект wstring? короче разбираться надо...


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.