Каков наилучший способ портировать библиотеку C ++ в C #? - PullRequest
4 голосов
/ 30 августа 2011

У меня есть (только заголовок) библиотека C ++, которую я ищу для портирования на C #. Это обертка Win API, которую я сделал для определенной цели. Я хочу перенести его на C #, потому что я хочу развивать его дальше, используя C #. Какой самый эффективный (и самый простой?) Способ его портировать. Пожалуйста, обратите внимание, что я не хочу чего-то беспокойного, потому что я не хочу тратить больше времени на перенос библиотеки, чем это потребовалось для создания этой библиотеки. Так есть ли способ?

Ответы [ 2 ]

3 голосов
/ 30 августа 2011

Это очень сильно зависит от того, насколько велика ваша библиотека, как она структурирована, как выглядит выделение памяти, насколько вы использовали библиотеки, недоступные в C # (например, в C ++ std lib), сколько шаблонов C ++ вы используете.

Различные стратегии могут быть

  • попытаться портировать (части) его автоматически с помощью какого-то собственного генератора кода
  • , не переносите его наC #, вместо этого используйте C ++ / CLI (что я очень успешно делал в прошлом)
  • делайте это вручную, потому что концепции C ++, которые вы использовали до сих пор, плохо сопоставляются с C #

«Только заголовок» не имеет большого значения.Фактически, технически все может стать немного проще, если у вас есть только один файл C ++ для каждого класса, который будет перенесен в один файл класса C #.

0 голосов
/ 30 августа 2011

Я могу придумать пару способов.

  1. Ручное преобразование в C # dll с возможной помощью генерации кода T4.
  2. Измените вашу библиотеку c ++ на управляемую dll, чтобы вы могли использовать ее в своем проекте c #.1007 * Конечно, вы можете использовать взаимодействие с вашей библиотекой c ++ в вашем проекте C #.Но в этом случае я не уверен насчет цели вашей библиотеки c ++, так как вы сказали, что это оболочка.

Поскольку у вас уже есть библиотека c ++, которой вы можете полностью управлять, я сначала попробую перейти к # 2.

...