CSimpleArray dll <-> exe
От: localhost  
Дата: 29.06.05 13:25
Оценка:
Подскажите плиз как сделать передачу CSimpleArray между dll и exe:

Есть exe MFC и dll win32 прилинкованная либом

// exe:
void SomeFunc()
{
    CSimpleArray<TOBJ> list;
    GetList(list);
}

// dll:
void _declspec(dllexport) GetList(CSimpleArray<TOBJ> &list);
...
void GetList(CSimpleArray<TOBJ> &list)
{
    TOBJ obj;
    ...
    list.Add(obj);
}


Вылетает ошибка при выходе из SomeFunc

DBGHEAP.C
Debug Assertion Failed!
Expression: _CrtIsValidHeapPointer(pUserData)
Re: CSimpleArray dll <-> exe
От: Bell Россия  
Дата: 29.06.05 13:35
Оценка:
Здравствуйте, localhost, Вы писали:

Похоже, что exe и dll собраны с использованием разных run-time libraries.
Любите книгу — источник знаний (с) М.Горький
Re[2]: CSimpleArray dll <-> exe
От: localhost  
Дата: 29.06.05 13:45
Оценка:
Здравствуйте, Bell, Вы писали:

B>Похоже, что exe и dll собраны с использованием разных run-time libraries.


Проблема только с передачей массивов (с vector-ом тоже самое) т.е. захват памяти в dll, освобожденеие в exe

в остальом всё работает
Re[3]: CSimpleArray dll <-> exe
От: Bell Россия  
Дата: 29.06.05 13:50
Оценка:
Здравствуйте, localhost, Вы писали:

L>Здравствуйте, Bell, Вы писали:


B>>Похоже, что exe и dll собраны с использованием разных run-time libraries.


L>Проблема только с передачей массивов (с vector-ом тоже самое) т.е. захват памяти в dll, освобожденеие в exe


L>в остальом всё работает


Это и говорит о разных rtl.
Или сделай так, чтобы и exe и dll собирались с (Debug) Multithreaded DLL, или освобождай память в DLL.
Любите книгу — источник знаний (с) М.Горький
Re[2]: CSimpleArray dll <-> exe
От: Кодт Россия  
Дата: 29.06.05 13:55
Оценка:
Здравствуйте, Bell, Вы писали:

B>Здравствуйте, localhost, Вы писали:


B>Похоже, что exe и dll собраны с использованием разных run-time libraries.


или с одинаковыми, но статическими. Нужно у обоих завести (одинаково) "[Debug] (Multi|Single)threaded CRT DLL" — см. ключи компилятора и настройки проекта.
Перекуём баги на фичи!
Re[3]: CSimpleArray dll <-> exe
От: localhost  
Дата: 29.06.05 14:35
Оценка:
Здравствуйте, Кодт, Вы писали:


К>или с одинаковыми, но статическими. Нужно у обоих завести (одинаково) "[Debug] (Multi|Single)threaded CRT DLL" — см. ключи компилятора и настройки проекта.



Спасибо!

Debug Multitheaded DLL помогло
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.