![]() |
|
|
![]()
|
|
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
Ага. Проблемы с апартаментами COM Вам нужно отмаршалить интерфейс в тот поток, где вы его собираетесь вызывать (CoMarshalInterThreadInterfaceInStream и CoGetInterfaceAndReleaseStream) и потом можно вызывать. Но учтите, вызовы COM объекта пойдут из разных потоков в параллель, он может быть к этому не готов |
|||
|
||||
| Zigrund |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 26.1.2011 Репутация: нет Всего: нет |
Спасибо. Буду пытаться разобраться. А вот ещё немного не потеме. Функция интерфейса принимает и возвращает VARIANT. Как в него и из него сделать double[][] (двумерный массив даблов). |
||||
|
|||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
Сначала проверить, что в VARIANT лежит SafeArray (это массивы в понимании AX). Потом проверить, что он 2х мерный. Потом сделать требуемый 2х мерный массив double'ов и поэлементно скопировать из SafeArray'я в массив. Если размеры массива известны заранее (и константны), то можно напрямую извлечь из SafeArray'я указатель на данные. |
|||
|
||||
| Zigrund |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 26.1.2011 Репутация: нет Всего: нет |
Вообщем там одномерный массив. В exe проекте всё работает а в длл опять как-то касяк. Ничего не возвращается. Передаётся вроде нормально. |
|||
|
||||
| Zigrund |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 26.1.2011 Репутация: нет Всего: нет |
Всёмучаю свой ком объект.
проблема с высвыбождением памяти:
Всё нормально работает, кроме этого кусочка (как раз, где обращени к ком объекту идёт):
При каждои запуске где-то 1MB памяти куда-то неизвестно уходит. В чём может быть проблема? Это сообщение отредактировал(а) Rrader - 4.3.2011, 17:16 |
||||
|
|||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
Криминала не видно. Видимо проблема где то в другом месте
|
|||
|
||||
| Zigrund |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 26.1.2011 Репутация: нет Всего: нет |
А у меня это единственное место, где я вариант использую. Может его как-то надо удалять особенным образом? |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 8 Всего: 223 |
||||
|
||||
| Zigrund |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 26.1.2011 Репутация: нет Всего: нет |
||||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: COM/DCOM/ActiveX/ATL/CORBA | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |