Я пишу оболочку CLI / C ++ вокруг собственной библиотеки DLL C ++, которую нельзя изменить. Одна из функций собственной библиотеки DLL возвращает вектор неуправляемых объектов. Как лучше всего поместить этот вектор в оболочку CLI? Оболочка CLI будет использоваться приложением C #.
class __declspec(dllexport) Instrument
{
public:
Instrument();
~Instrument();
string _type;
unsigned int _depth;
}
В собственной DLL есть функция getInstruments (), которую я пытаюсь обернуть.
class __declspec(dllexport) InstrumentList
{
InstrumentList();
~InstrumentList();
vector<Instrument*> getInstruments();
}
Поэтому мне нужно обернуть класс инструмента в управляемый класс, а класс InstrumentList - в управляемый класс. У меня есть упакованный класс Instrument, но мне нужно преобразовать вектор, возвращаемый getInstruments (), в нечто эквивалентное, которое может вернуть оболочка CLI для InstrumentList.
Instrument::_type
или один раз при вызовеInstrumentList::getInstruments()
? - person ildjarn   schedule 20.05.2011std::vector<>
илиstd::string
, так что это было бы не очень полезно. - person ildjarn   schedule 20.05.2011Instrument
) объектом в нем, или у вас есть ссылочный класс, который отражает исходный классInstrument
, и вы создаете его экземпляр, когда вам нужно работать с инструментами в C ++ / CLI - person Marius Bancila   schedule 20.05.2011std::vector
не гарантируется наличие совместимых определений в разных библиотеках DLL, поэтому ее экспорт через границы DLL - очень плохая идея. То же дляstd::string
. Помещение собственного кода и управляемой оболочки в одну DLL было бы хорошо, детали C ++ скрыты внутри одной DLL, а объекты .NET имеют стандартные двоичные интерфейсы, которые могут пересекать границы DLL. - person Ben Voigt   schedule 20.05.2011