Здравствуйте, Sinclair, Вы писали:
S>>Ссылка на функцию стандартизирована.
S>. А ссылка на объект класса — нет, не стандартизована. VMT не стандартизована. Обработка исключений не стандартизована. Менеджер памяти не стандартизован. Примерно ничего из того, что может захотеться использовать в С++-библиотеке, не стандартизовано.
Чтобы работать с объектом класса — используете хандлер.
Потом в метод передаете хандлер первым параметром и данные как в инстациональный метод. Все просто.
Вместо исключений — коды ответов + описание (если нужно).
Очистку памяти делаете специальными функциями.
Внутри же библиотеки можете использовать все возможности — ограничение только на верхнем уровне. И это правильно — чтобы была возможность универсального доступа из 6 платформ — так нужно сделать.
S>>Выше написал — нет сборщика мусора под все платформы
S>от повторения ваше заблуждение не станет ближе к истине. Под какую из платформ вы не нашли CLR?
Под iOS и Android.
S>>и возможности собрать стандартную .net-библиотеку под все платформы.
S>Есть такая возможность. Аж два раза: можно запаковать в "библиотеку" зависимость от .net runtime, и поставлять байткод. А можно собрать из библиотеки .dll/.lib под нужную платформу при помощи NativeAOT.
Покажите как это сделать. Чтобы были скрипты сборки под все платформы и генерация h-файла для использования из любого языка.
S>>А C++ — все можно. Даже важные сторонние библиотеки все собираются под все платформы — тот же boost.
S>Вы путаете две ортогональных вещи: кроссплатформенность и межъязыковую совместимость. Оттого, что boost можно "собрать" (на самом деле — нельзя) под все платформы, он не станет доступным из кода на Java или Object Pascal. "
Boost можно собрать под все платформы и использовать в своей C++ -библиотеке. А чтобы использовать уже вашу библиотеку в других языках — пишется FFI-интерфейсы — читай методы на голом C. И
это то немногое, с чем могли договорится все народы мира.