Лучший способ использовать библиотеку классов VB.NET из C++ DLL?

Мне нужно использовать один из моих проектов VB.NET в проекте C++. Интерфейс между ними будет предназначен для того, чтобы код C++ создавал экземпляры и вызывал методы для одного из объектов сборки .NET.

Оба компилируются в DLL (а затем DLL C++ загружается из NTVDM как VDD, но это, вероятно, не имеет значения).

Если возможно, я хотел бы избежать использования COM для этого, так как мне нужно развернуть, не касаясь реестра. Кроме того, я использую выпуски Visual Studio 2008 Express как для C++, так и для VB.NET.

Пожалуйста, как лучше всего это сделать?


person Community    schedule 23.12.2008    source источник


Ответы (2)


Вам действительно нужен родной C++ или вы можете использовать C++/CLI?

Если вы можете сделать все это на C++/CLI, вы получите чистое .NET-приложение.

Если вам нужен «собственный» C++, вы можете создать сборку, включающую управляемый и неуправляемый C++, непосредственно из Visual Studio (собственный C++ вызывает C++/CLI, который затем вызывает ваш VB.NET).

И, если вы предпочитаете иметь все в одной сборке, вы можете следовать инструкциям для связывание собственного C++ с приложениями C#. Это должно работать и для VB.NET.

И я настоятельно рекомендую "Expert C++/CLI" Heege (1-59059-756-7)

person Seb Rose    schedule 23.12.2008
comment
Спасибо, это выглядит многообещающе. Вот что я сделал до сих пор (в проекте C++): добавил параметр /clr в Configuration -> General -> Common Language Runtime Support и добавил ссылку на проект VB.NET. Intellisense сразу улавливает это, и короткий тест скомпилирован нормально. Очень хорошо! - person ; 23.12.2008
comment
Я только что выполнил шаги, описанные в вашем комментарии, но компилятор С++ не видит класс VB - как мне его включить? - person Sideshow Bob; 21.06.2012

Если вы не хотите использовать COM, и я вас не виню, я бы просто создал веб-службу и открыл бы через нее вашу функциональность. Легко получить доступ к веб-службе на C++ и легко открыть в VB.NET.

(Обновлять)

Вот ссылка на блог, в котором рассказывается о том, как выставить веб-службу без IIS

person John Sonmez    schedule 23.12.2008
comment
Спасибо, это интересная идея, но, к сожалению, я не могу использовать ее в этом случае, так как библиотека VB.NET имеет побочные эффекты (аутентификация от имени текущего пользователя и запись файлов от их имени), которые требуют запуска на том же компьютере. как и остальная часть программы. - person ; 23.12.2008
comment
Вы все еще можете запустить его на той же машине. Просто откройте его для своего кода C++ на этой машине. - person John Sonmez; 23.12.2008
comment
Нужно ли мне для этого настраивать его в IIS? Это сделает развертывание более тяжелым, чем требуется. Извините, я мало знаю о веб-сервисах. - person ; 23.12.2008
comment
Разместил ссылку в ответ для вас. - person John Sonmez; 23.12.2008