Ошибка в передаче конкретной строки в библиотеку на C++ через структуру (Type) - VB

Узнай цену своей работы

Формулировка задачи:

Уважаемые знатоки, возникла не понятная для меня проблема с передачей данных из программы пишущейся на VB6 в библиотечную функцию пишущуюся на C++ и компилированную MinGW (codeblocks).
передача осуществляется посредством передачи адреса на структуру:
С++:

VB6:

Все работает отлично пока не начинается обращение к ostrovodrinstruct::order, переданной в библиотечную функцию, внутри самой библиотеки - когда библ.функция доходит до обращения к переменной то VB программа выдает ошибку:
Инструкция по адресу "0x..." обратилась к памяти по адресу "0x...". Память не может быть "read"
"OK" -- завершение приложения
"Отмена" -- отладка приложения
После нажатия "OK" среда VB6 в которой приоизводился запуск вылетает.
Пробовал в структуру добавлять еще одно поле в конце без его использования - ошибку не выдает за то order пустое. Пробовал вызывать библиотеку из программы написанной на C++ - все работает отлично, но библиотека должна использоваться именно для программы на VB6.

Решение задачи: «Ошибка в передаче конкретной строки в библиотеку на C++ через структуру (Type)»

textual
Листинг программы
inhabitantsstruct *inhabitants;
<font color="blue">short</font> inhsmax=<font color="darkblue"><b>0</b></font>;
<font color="blue">short</font> inhscur=<font color="darkblue"><b>0</b></font>;

<font color="blue">extern</font> <font color="teal">"C"</font> <font color="blue">void</font> WINAPI DLL_EXPORT addinhabitant(inhabitantsstruct* inhabitant)
{
    inhabitantsstruct *inhstmp;
    <font color="blue">if</font>(inhscur==inhsmax) {
        inhsmax+=<font color="darkblue"><b>10</b></font>;
        inhstmp = <font color="blue">new</font> inhabitantsstruct[inhsmax];
        <font color="blue">for</font>(<font color="blue">int</font> i=<font color="darkblue"><b>0</b></font>;i<inhscur;i++) {="" inhstmp[i]="inhabitants[i];" }="" <font="" color="blue">delete inhabitants;
        inhabitants = inhstmp;
    }

    inhabitants[inhscur] = *inhabitant;
    inhscur++;
}
</inhscur;i++)>

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.7 из 5
Похожие ответы