Перенос кода C++ с Windows на Mac

Я долгое время занимаюсь Windows-разработкой, и похоже, что я буду участвовать в переносе Windows-приложения на Mac.

Мы решили использовать Flex/Air для графического интерфейса с обеих сторон, что, кстати, выглядит действительно гладко.

В моем приложении для Windows есть C++ DLL, которая управляет сетевыми адаптерами (проводными и беспроводными). Это написано с использованием стандартной библиотеки и Boost, поэтому большая часть этого должна работать на разных платформах.

На Mac какую IDE/компилятор использует большинство людей, если они хотят писать на C++? Кроме того, может ли кто-нибудь предоставить указатель на любые API-интерфейсы Mac, которые могут управлять адаптерами WiFi (ассоциировать, сканировать, отключать и т. д.)?


person Jim In Texas    schedule 31.10.2008    source источник


Ответы (5)


Xcode — это IDE для Mac OS X. Вы можете загрузить последнюю версию, присоединившись к Apple Developer Connection с бесплатным онлайн-членством.

Я не думаю, что существуют какие-либо поддерживаемые API для управления беспроводными сетевыми адаптерами. Ближе всего будет инфраструктура конфигурации системы, но я не знаю, позволит ли она вам делать все, что вы хотите.

Кроме того, я настоятельно рекомендую против пытаться использовать Flex/Air для пользовательского интерфейса вашего приложения. Вам, как разработчику Windows, это может показаться привлекательным в Windows, но когда дело доходит до предоставления полного пользовательского опыта Macintosh, такие технологии не всегда являются хорошим выбором.

Например, я думаю, что приложения Air не поддерживают весь диапазон нажатий клавиш для редактирования текста в Mac OS X. Хотя не все пользователи Mac будут использовать все нажатия клавиш, для тех, кто привык к ним, пытаясь ввести текстовое поле, которое не обрабатывает (скажем) control-A и control-E, чтобы перейти к началу и концу поля, похоже на плавание через сироп.

Для нового приложения, которое должно быть кросс-платформенным, я бы настоятельно рекомендовал построить базовую логику на C++, используя Cocoa на Mac и WPF на Windows, чтобы обеспечить наилучшее взаимодействие с пользователем на каждой платформе. Как в Mac OS X, так и в Windows есть современные собственные технологии взаимодействия с пользователем, к которым привыкли соответствующие пользователи, а также есть хорошие способы взаимодействия кода C++ с этими технологиями.

person Chris Hanson    schedule 02.11.2008
comment
+1 за комментарий о нативных интерфейсах. В то время как Flex очень классный, часть опыта Mac всегда видит и использует очень хорошо сделанные интерфейсы Cocoa. Таким образом, они могут попробовать использовать Qt4, поскольку он поддерживает собственные виджеты на различных платформах. - person Mark Kegel; 03.11.2008
comment
Спасибо за содержательные комментарии. У нас есть основная логика в модулях C++, и мы рассмотрели отдельные графические интерфейсы Windows и Mac. Мы не смогли найти хорошего разработчика Cocoa здесь, в Остине, к тому же мы не хотим поддерживать два графических интерфейса, поэтому будем жить с ограничениями гибкости. - person Jim In Texas; 19.11.2008
comment
Это лучший ответ. Оказывается, последний API конфигурации системы Mac будет управлять Wi-Fi-адаптерами так, как мы хотим. Для более ранних версий их ОС нам придется использовать утилиту для управления адаптером Wi-Fi. - person Jim In Texas; 20.01.2009

Де-факто OS X IDE и компилятор — это Xcode. Он поставляется с каждым Mac, вы просто устанавливаете его с установочного компакт-диска OS X.

На сайте разработчиков Apple можно получить дополнительную информацию об API OS X.

person ine    schedule 31.10.2008

Xcode и пользовательский GCC, я думаю...

person chills42    schedule 31.10.2008
comment
Ничего особенного в gcc. Вы можете построить его сами, если хотите! - person Martin York; 01.11.2008
comment
Это GPL, поэтому, естественно, с открытым исходным кодом, но Apple делает модификации, специфичные для OS X. См. также developer.apple.com/tools/gcc_overview.html. - person Pieter; 03.11.2008

xcode - это горячо, как уже указывали люди.

Поддерживая в прошлом кодовую базу Windows/Mac, взгляните на MVC.

Пока вы сохраняете фоновую логику отличной от пользовательского интерфейса и от вещей, специфичных для платформы (таких как обработка файлов, сети, рисование на экране и т. д.). Таким образом, когда вы захотите перейти на Linux в будущем, вам просто нужно будет написать эти специфичные для платформы компоненты.

Что касается сети Mac, вы на уровне подключения и так далее? Почему бы просто не позволить ОС справиться с этим, а затем вы просто увидите, какие соединения доступны? Зачем беспокоиться о том, является ли соединение проводным или беспроводным? Поскольку в ОС уже встроено множество таких инструментов, а пользователи привыкли следить за тем, чтобы соединение работало, кажется странным наличие дополнительной программы для манипулирования сетью.

person mmr    schedule 31.10.2008
comment
Почему бы просто не позволить ОС справиться с этим ... - Переносимая dll должна иметь возможность включать и отключать проводные адаптеры, а для адаптеров Wi-Fi необходимо сканировать ssid и давать команду сетевому адаптеру для связи с конкретной точкой доступа Wi-Fi, используя правильную настройку безопасности (wpa, wep и т. д.). - person Jim In Texas; 31.10.2008

Xcode используется очень часто, насколько я знаю комбинированный редактор (например, Textmate), командная строка gcc довольно интенсивное использование тоже. (это то, что я делаю в OS X)

Для всех потребностей API перейдите на сайт разработчиков Apple, например. сетевой API

person Pieter    schedule 31.10.2008