2009-10-15 1 views
0

Необходимо передать экземпляр CArray во внешнюю DLL из моего приложения, написанного на C++ Builder. Есть ли способ использовать MFC из C++ Builder? Если да, то как?Используйте класс CArray из MFC в приложении C++ Builder

Приложение: эта DLL не моя, и я не могу ее изменить.

+0

Кроме того, CArray страшно. Вместо этого используйте 'std :: vector'. –

+0

Я не могу изменить эту DLL, которая ожидает экземпляр CArray. Это не мое. –

ответ

0

Я не знаю, поддерживает ли C++ Builder какую-либо поддержку MFC (возможно, для этого есть сторонний открытый исходный код).

Поскольку CArray имеет несколько методов, одно из возможных решений заключается в том, чтобы написать оболочку для него и открыть интерфейс для dll.

См, например, adapter pattern.

0

Вы можете использовать зЬй :: вектор вместо этого. Функциональность практически такая же.

+0

Эта DLL не моя, и я не могу изменить ее интерфейс. Он ожидает, что мы с CArray не сможем ничего с этим сделать. –

0

CArray очень похож на станд :: вектор в том, что данные contigous в памяти.
Самый простой (только безопасный) способ - передать указатель на фактические данные и параметр размера. См CArray::getData

Ваш отдельный длл shoudln't изменить размер - если вам нужно сделать, это использовать зЬй :: Вектор

Смежные вопросы