/Oi switch

Переключатели /Oi и /Oic направляют компилятор MIDL для использования полностью интерпретированного метода маршалинга. Переключатель /Oicf предоставляет дополнительные улучшения производительности.

midl /{Oi | Oic | Oif | Oicf}

Параметры переключения

Эй

Задает полностью интерпретируемый метод маршалинга заглушки, передаваемый между клиентом и сервером.

Замечание

Этот параметр устарел. Рекомендуется использовать переключатель /Oicf на своем месте.

 

Оик

Задает метод маршалинга без кода прокси-сервера, который предоставляет все функции /Oi , а также дополнительно уменьшает размер кода заглушки клиента для интерфейсов объектов.

Замечание

Этот параметр устарел. Рекомендуется использовать переключатель /Oicf на своем месте.

 

Oif или Oicf

Задает метод маршалинга без кода, который включает все функции, предоставляемые /Oi и /Oic , но использует новый интерпретатор (строки быстрого форматирования), обеспечивающий лучшую производительность, чем /Oi или /Oic. Этот параметр включает последние улучшения RPC и рекомендуется для современных сценариев RPC.

Замечания

Обратите внимание на ограничения, связанные с поддержкой платформ.

Компилятор MIDL 3.0 предоставляет два метода маршалинга кода: полностью интерпретированный ( /Oi, /Oic и /Oicf) и смешанный режим ( /Os). Начиная с MIDL версии 6.0.359 компилятор MIDL по умолчанию создает заглушки /Oicf/надежные заглушки. Некоторые языковые функции не поддерживаются в некоторых режимах. В этом случае компилятор автоматически переключается в соответствующий режим и выдает предупреждение.

Если производительность является проблемой, метод смешанного режима ( /Os) может быть лучшим подходом. В этом режиме компилятор выбирает маршал некоторые параметры, встроенные в созданные заглушки. Хотя это приводит к увеличению размера заглушки, он обеспечивает повышенную производительность.

Полностью интерпретируемый метод маршалирует данные полностью в автономном режиме. Это значительно уменьшает размер заглушки, но приводит к снижению производительности. Кроме того, с полностью интерпретируемым методом существует ограничение в 16 параметров для каждой процедуры. Любая процедура, содержащая более 16 параметров, автоматически обрабатывается в режиме /Os . Среди интерпретированных режимов /Oicf обеспечивает лучшую производительность и /Oi обеспечивает лучшую обратную совместимость.

Вы можете использовать параметр /Oif , если приложение использует функции MIDL, которые были представлены с MIDL 3.0, например атрибуты [wire_marshal] и [user_marshal]. Если приложение использует каналы , необходимо использовать параметр /Oif ; Если указать другой режим, компилятор MIDL переключится на /Oif.

Чтобы точно настроить способ маршалирования кода заглушки, Майкрософт RPC предоставляет атрибут ACF [optimize]. Этот атрибут используется в качестве атрибута интерфейса или атрибута операции для выбора режима маршалинга для отдельных интерфейсов или отдельных операций.

Соглашения о вызовах

Заглушки, созданные компилятором MIDL в интерпретированном методе с помощью переключателей /Oi, /Oic или /Oif , должны быть компилированы как stdcall или процедуру cdecl во время компиляции C. Соглашение о вызове PASCAL или Fastcall не будет работать. Кроме того, заглушка сервера должна быть скомпилирована как stdcall.

Примеры

midl /Oi filename.idl

midl /Oic filename.idl

midl /Oif filename.idl

См. также

/Надежные

/no_robust

Общий синтаксис командной строки MIDL

/Os

Оптимизировать

/no_format_opt