Я пишу приложение без графического интерфейса, которое я хочу использовать в качестве кроссплатформенного между OS X и Windows.Я смотрю на следующую архитектуру, но я не знаю, будет ли она работать на стороне Windows:
(точка входа для платформы) -> Основной цикл ANSI C => Код модели ANSI C, выполняющий данныеобработка / логика => (помощники для конкретной платформы)
Итак, основной материал, который я планирую написать на обычном ANSI C, потому что: A) он должен быть независимым от платформы, B) я очень доволен C,C) Он может выполнять свою работу и делать это хорошо
(точка входа для конкретной платформы) может быть написано на любом уровне, необходимом для выполнения работы, это небольшой объем кода, для меня это не имеет значения.
(помощники, работающие на платформе).Это такие вещи, как синтаксический анализ XML, доступ к базам данных, графические инструменты и прочее.Вещи, которые не легко в C. Вещи, которые современные языки / рамки будут давать бесплатно.На OS X этот код будет написан в Objective C, взаимодействующем с Какао.В Windows я думаю, что лучше всего использовать C #
Так что в Windows моя архитектура (упрощенная) выглядит так:
(C # или C?) -> ANSI C -> C #
Возможно ли это?Некоторые мысли / предложения на данный момент ..
1) Скомпилировать мое ядро C как .dll - это нормально, но, похоже, нет способа вызвать моих помощников на C #, если я не могу каким-то образом получить указатели на функции и передать ихна мой взгляд, но это маловероятно
2) Скомпилируйте C .exe и C # .exe и попросите их обмениваться данными через общую память или какой-либо IPC.Я не совсем против этого, но он, очевидно, представляет большую сложность, поэтому он не кажется идеальным
3) Вместо C #, использующего C ++, он дает мне некоторые полезные вещи для управления данными и хороший вспомогательный код.И я могу смешать это довольно легко.И работу, которую я делаю, возможно, легко перенести на Linux.Но мне действительно не нравится C ++, и я не хочу, чтобы это превратилось в сторонний библиотечный фестиваль.Не то, чтобы это была огромная сделка, но это 2010 год ... все для базового управления данными должно быть встроено. И нацеливание на Linux на самом деле не является приоритетом.
Обратите внимание, что никакие "общие" альтернативы не подходят, как предложено в другихпохожие вопросы по ТАК я видел;java, RealBasic, mono .. это приложение с чрезвычайно высокой производительностью, делающее мягкие программы в реальном времени для игр / симуляций, мне нужны C & друзья здесь, чтобы сделать это правильно (возможно, вы этого не делаете, но я делаю)