Как использовать проект C ++ из приложения .NET?

Я постоянный разработчик .NET, стремящийся интегрировать библиотеку C ++ в проект .NET. У меня есть несколько идей, но так как яЯ новичок в C ++ в целом я нене знаю границ технологии, которую яЯ пытаюсь работать с. Проект C ++ - это по сути быстрый рендеринг звука, который может воспроизводить многодорожечные аудиофайлы с помощью множества различных приемов постобработки. Все это круто, но, учитывая, что у меня есть простое приложение .NET WinForms, с которым я хочу интегрироваться, все начинает выглядеть грязно.

Во-первых, проект C ++ не имеет привязок .NET или интеграции ActiveX / COM. Это равнинаПроект MS VC ++ 9. Если я хочу работать с проектом в моем приложении .NET, япридется как-тоинтерфейс с этим, т.е. создавать экземпляры классов, устанавливать свойства, вызывать методы, вводить и выводить данные и т. д.

Во-вторых, он создан для работы в качестве независимого приложения Windows и управляет своими собственными окнами с помощью API MS Windows. Это нормально, но как-то мне нужна .NET VMБег на заднем плане - управление шоу и запуск всего моего кода на C #. Я неЯ пишу на C ++, поэтому мне нужно придерживаться C #, чтобы создать приложение на основе этой библиотеки.

В-третьих, буду ли яработает в том же процессе, что и C ++, или нет, мне нужен способпостроить / интерфейс / отладки эти 2 отдельных приложения, как если бы они были одним. У меня нет опыта в программировании на C ++, за исключением того факта, что я написал пару C ++ DLL для высокопроизводительной обработки данных.

Итак, много вопросов и не знаю, с чего начать!

Я могу полностью скомпилировать эту библиотеку и получить ее в VC EXE, но как мне это сделать?со-компиляция мой код .NET в это? Или, в качестве альтернативы, как мне скомпилировать код C ++ в .NET EXE, чтобы он работал в управляемой среде? Обратите внимание, что это не былоЯ специально для этого и могу плохо себя вести, если я попытаюсь слишком сильно измениться.

Основная проблемавзаимодействие с этим. Как яразоблачать какие классы C ++ доступны из .NET? Я точно знаю, какие классы мне нужны, и яВам понадобится всего пара дюжин классов вместе с соответствующими методами / свойствами, которые будут доступны из .NET. Я нене прочь почеркклассы обертки в .NET, чтобы помочь .NET VM понять структуру классов байтов, передаваемых туда и обратно. Я'Я надеюсь, что я могу напрямую работать с объектами C ++ из управляемой среды, поэтому большая часть моего кода может оставаться в .NET.

Даже если я буду запускать его как независимое приложение, придется ли мне прибегать к сокетам или к чему-то другому, чтобы общаться с ним? Это абсолютно худший случай, и яЯ сделаю все, чтобы избежать этого.

Любая помощь или указатели приветствуются, я надеюсь, что я четко и ясно поставил перед собой задачу и что мои вопросы достаточно конкретны и подотчетны. Спасибо за любую помощь!

Редактировать: Если я напишу классы-обертки или сгенерирую их, могу ли я использоватьP / Invoke создавать экземпляры классов и вызывать на них методы и запускать в фоновом режиме собственный код C ++? Где будет храниться и управляться память для таких объектов C ++? Внутри .NET-кучи или вне ее?

Ответы на вопрос(2)

Ваш ответ на вопрос