Разработка клиента
Разработка клиентской программы RPC аналогична разработке серверной программы. Сведения о разработке серверной программы RPC см. в разделе Разработка сервера.
Как и при разработке сервера, клиентская программа должна включать файл заголовка, который компилятор MIDL создает из IDL-файла. Компилятор MIDL также создает исходный файл C, содержащий заглушку клиента. Необходимо скомпилировать исходный файл C и связать его с клиентской программой. (Кроме того, компилятор MIDL создает исходный файл C, содержащий заглушку сервера, но это не относится к данному обсуждению.)
Помимо компиляции и связывания заглушки клиента с файлами программы, необходимо связать библиотеку импорта (и любые другие библиотеки, необходимые клиентской программе) с клиентской программой. Процесс создания клиентской программы RPC показан на следующей схеме.
В примере на предыдущем рисунке показано создание клиентской программы RPC с именем MyClnt.exe. Первым шагом является определение интерфейса в файле MyApp.idl. Компилятор MIDL использует MyApp.idl для создания файла MyApp_c.c, который содержит заглушку клиента. Он также создает файл MyApp.h, который должна включать клиентская программа. Клиентская программа также должна включить файлы RPC.h и RPCNDR.h.
Сама клиентская программа создается в файле MyClnt.c. В реальном проекте клиентская программа обычно состоит из нескольких исходных файлов C. Все они должны быть скомпилированы и связаны друг с другом. Однако для простоты в этом примере используется только один файл.
Файлы MyClnt.c и MyApp_c.c компилируются и связываются вместе с библиотекой времени выполнения RPC и любыми другими библиотеками, которые необходимы клиентской программе. Результатом является исполняемая клиентская программа с именем MyClnt.exe.
Если IDL-файл не компилируется в режиме совместимости OSF (/osf), клиентская программа должна предоставить функцию для выделения памяти и функцию для ее освобождения. Для Windows 2000 и более поздних версий рекомендуемый режим — /Oicf. Дополнительные сведения см. в разделах Как выделяется и освобождается память, а также Указатели и выделение памяти.