У меня есть модуль A в управляемом C++, это зависит от модуля B в родном C++, который завершен как COM plus. В модуле B я читаю байты из файла. Теперь я пытаюсь вызвать функцию чтения файла с A. Но не удалось.Как получить байты в управляемом проекте C++ из проекта COM plus
Деталь зависимости: Я использовал tlbimp.exe и сгенерировал взаимодействие в соответствии с модулем B. Обратные ссылки на interop.
Я попытался передать «массив ^», но был получен только один символ, что понятно, потому что маршалинг не знает длину массива и не может обрабатывать весь массив.
Я искал некоторые рекомендации по безопасному массиву, но не смог использовать его в моих проектах. Может ли кто-нибудь помочь мне в этом?
Большое спасибо.
Вы можете использовать IStream вместо передачи байтов. –
Так что мне нужно реализовать IStream в модуле B и экспортировать его в A? И создать объект потока в модуле A с экспортированным типом из B? – Cesc
Что-то в этом роде. Вы даже можете повторно использовать существующий .NET IStream, созданный специально для встроенного взаимодействия (http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.comtypes.istream.aspx) –