Как связать два разных проекта, написанных на двух разных языках, таких как C ++ и C # в VS? - PullRequest
1 голос
/ 25 ноября 2011

Как связать два разных проекта, написанных на двух разных языках, таких как C ++ и C # в VS? например, у меня есть программа, написанная на c ++, сумма двух чисел, а другая программа, написанная на C #, умножить два числа, я хочу связать их вместе в VS. большое спасибо и наилучшие пожелания

Ответы [ 5 ]

0 голосов
/ 24 января 2012

с созданием DLL-файла на одном языке и использованием его на другом может сделать эту жертву.

0 голосов
/ 25 ноября 2011

нельзя связать два исполняемых файла.что вы можете сделать, это определить один из них как DLL и связать его с другим.Попробуйте определить 2 проекта: csporj для C #, vcproj для C ++ и другой основной (может быть любым).Затем создайте зависимости между основным и двумя проектами.Вы тоже хотите позвонить одному из другого?

0 голосов
/ 25 ноября 2011

связывание так, как вы описываете, не имеет особого смысла или как минимум открыто для интерпретации.

В Visual Studio, безусловно, вы можете иметь одно решение, содержащее проект C ++, проект C # и VB.NET проект, скажем, это все библиотеки классов.Вы создаете все решение и получаете все скомпилированные и встроенные в 3 отдельные библиотеки DLL.

Затем, если вы добавите в решение консольное приложение или приложение Windows Form, если такой проект находится в C # или VB.NETВы можете просто добавить ссылку на другие проекты, за исключением C ++, если это не управляемый CLI / C ++.

, чтобы использовать функции проекта C ++ из C # / VB.NET, возможно, вам потребуется использовать DLLImport.

0 голосов
/ 25 ноября 2011

Используя ваш пример, простейшим вариантом может быть запуск одной программы другой программой и чтение ее выходных данных.

Но я подозреваю, что это не тот ответ, который вы ищете. Для нативного C ++ и C # у вас есть три других очевидных варианта:

  1. Использование .NET COM Interop для написания / создания COM-объекта, который можно использовать на другом языке.
  2. Написание некоторого кода C ++ \ CLI для взаимодействия между кодом C ++ и кодом C #. Если вам не нужен чистый нативный код C ++, тогда можно было бы написать весь раздел C ++, используя C ++ \ CLI
  3. Использование PInvoke для вызова из C # в C ++ DLL.
0 голосов
/ 25 ноября 2011

У вас есть два основных варианта:

  • PInvoke - Работает только с C # на C / C ++, а не наоборот. Может использоваться только для API C (вы не можете передавать объекты C ++ через PInvoke).

  • Оболочка C ++ / CLI - C ++ / CLI - это управляемая версия C ++, которая может комбинировать управляемый и собственный код. Используя это, вы можете обернуть классы / API C ++ в API C ++ / CLI (которые затем можно использовать из C #). ИТ также работает по-другому. Однако это включает в себя написание большего количества кода, чем PInvoke.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...