| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Передать строку из С++ в С# |
| Автор: Competitor 8.9.2007, 14:47 | ||||
| Привет всем. Сделал dll'ку на С++, которая работает с WMI и выдает на выход какую-то строку типа BSTR. Я импортирую эту дллку с свой основной проект на C#. Как мне передать значение из С++ дллки в C#, чтобы там оно нормально прочиталось. Допустим метод в С++ на экспорт выглядит так:
А в C# метод импорта выглядит так:
При таком написании вываливается ошибка записи в память. Подскажите плиз как решить эту проблему? |
| Автор: Fazil6 8.9.2007, 15:15 | ||
решение проблемы заключается в использовании интерфейса dll только встроенных типов.
импорт такой функции возможен только в приложении, скомпиллированным темже компиллятором что и библиотека, причем тойже версии и с теми же настройками, иначе ничего не гарантируется. Потому, что возвращается объект. Для передачи строк используй char*. |
| Автор: Competitor 8.9.2007, 16:07 |
| Fazil6, спасибо за подсказку. А как тогда сконвертить BSTR в char*. |
| Автор: Fazil6 8.9.2007, 19:52 | ||
думаю, что тебе надо не конвертация, тут надо думать о выделении и заполнении буфера. Как вариант
вообще конкретное решение может быть и иным и это зависит от конкретики решаемой задачи |
| Автор: akizelokro 10.9.2007, 08:13 |
| Это вопрос не из общих, а из MC++. http://msdn.microsoft.com/msdnmag/issues/02/08/CQA/ Зачти, глянь какой тип идет по умельчанию для string. Преобразуй к нему. Или попробуй отмаршализовать BSTR (которая организуется типо (не путать с "типа") указатель на буфер, где сначала длина строки, а затем уже байты текстовухи). |