Каков хороший способ поддерживать общий код между C# и Objective-C?
В настоящее время я занимаюсь созданием прототипа нескольких небольших приложений, предназначенных для выпуска на Mac и Windows. Естественно, это означает, что какао с Objective-C на Mac и.NET с C# на Windows. К сожалению, поскольку эти два языка совершенно разные, работа с 4 приложениями больше похожа на работу с 8, так как мне приходится все делать дважды.
В некоторой степени это неизбежно, но я изучаю способы поделиться некоторыми общими кодами / функциями, которые имеют дело с независимыми от платформы вещами (вычисления, формулы и т. Д.).
Я рассмотрел C/C++, но, поскольку он должен быть скомпилирован в DLL для использования в C#, он не стоит того.
Сейчас я смотрю на использование скриптового языка, такого как Lua, который демонстрирует некоторое обещание, но не без его доли сложностей. Есть ли другие способы, которые могут быть лучше?
3 ответа
Одним из способов является использование Mono, кроссплатформенной среды разработки с открытым исходным кодом.
Технически, вы можете написать "управляемые сборки C++" для использования в приложениях.NET, и вы можете смешивать C++ непосредственно с приложениями Objective-C, но синтаксис, необходимый для ссылки на объекты.NET (myclass^), отличается настолько, что вы все равно в конечном итоге не делиться очень много.
Вы можете использовать C/C++ как DLL, для C#. Использовать C Dll из C# очень просто, используя.NET совместимость и маршалинг. На самом деле, это было мое предпочтительное решение при разработке для iPhone и WinPhone....
Подробнее о вызове C Dll из C#, прочитайте MSDN и этот простой пример: http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.dllimportattribute.aspx