Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Некоторые функции Microsoft RPC и MIDL 3.0 и более поздних версий являются платформенными.
В качестве меры предосторожности компиляторы MIDL 3.0 и более поздних версий создают защитные механизмы, которые упрощают проверку совместимости на стадии компиляции на C. MIDL создает два типа защиты: зависящую от платформы защиту (32-разрядная и 64-разрядная) и зависящую от версии защиту (зависимость набора функций). Например, MIDL создает следующий предохранитель, чтобы предотвратить выполнение компиляции 32-разрядной C-заглушки для других платформ.
#if !defined(__RPC_WIN32__)
#error Invalid build platform for this stub.
#endif
Зависимая от выпуска защита активируется за счет набора функций, найденных в обработанных файлах IDL, а также с использованием параметра /target. Например, если интерфейс использует функции, поддерживаемые только в Windows 2000 или более поздней версии, MIDL создает защиту с помощью макроса TARGET_IS_NT50_OR_LATER.
Макросы защиты, определенные в Rpcndr.h, зависят от параметра WINVER и _WIN32_WINNT и оцениваются компилятором C/C++.
Если во время компиляции C вы получите сообщение об ошибке, указывающее, что для запуска заглушки требуется определенная платформа, сначала проверьте, не использовали ли вы функцию, которая недоступна на этой платформе. Функции, запускающие определенную охрану, перечислены в теле охранника. В предыдущем примере переключатель компилятора -Oicf активировал защиту. К заметным функциям данного типа относятся переключатель /robust и атрибут [асинхронный], доступный в Windows 2000 и более поздних версиях, конструктор типа, параметр компилятора /Oif и атрибуты [user_marshal] и [wire_marshal]. Заглушки, использующие эти функции, не будут выполняться в более ранних системах.
Если вы знаете, что целевая платформа правильна для функций, которые вы используете и по-прежнему получаете ошибку, вам может потребоваться задать переменные среды соответствующим образом.
Сборка для Windows 2000 или более новые версии
Добавьте эту строку в файл makefile:
CFLAGS = $(CFLAGS) -D_WIN32_WINNT=0x500
Связанные разделы