Трассировка и отладка в .NET

         

Как создать и использовать упаковщик, вызываемый во время выполнения (Runtime Callable Wrapper, RCW)



Как создать и использовать упаковщик, вызываемый во время выполнения (Runtime Callable Wrapper, RCW)

1. Имея файл динамически подключаемой библиотеки (DLL) — сервер, построенный на основе модели компонентных объектов Microsoft (COM), — или TLB-файл, с помощью Tlbimp.exe создайте упаковщик, вызываемый во время выполнения (Runtime Callable Wrapper, RCW). Этот упаковщик позволит получить доступ из управляемого клиентского кода к компонентам на основе модели компонентных объектов Microsoft (COM).
2. С помощью Regsvr32.exe зарегистрируйте на своей машине динамически подключаемую библиотеку (DLL) сервера на основе модели компонентных объектов Microsoft (COM), если это не было сделано раньше.
3. При желании, добавьте оператор использования пространства имен в клиентскую управляемую программу на C++, чтобы можно было обращаться к классу на основе модели компонентных объектов Microsoft (COM) по его короткому имени. Это пространство имен можно найти с помощью Oleview.exe — нужно поискать имя библиотеки на сервере. Несомненно, следует также добавить в клиентскую программу фрагмент, который объявляет и вызывает методы компонента на основе модели компонентных объектов Microsoft (COM). Пример такого фрагмента мы рассмотрим немного позже.
4. Инсталлируйте сборку LegacyCOMServer.dll, если вы еще этого не сделали. Проще всего с этой целью скопировать файл LegacyCOMServer.dll в папку управляемого клиента. Теперь клиентская программа может быть скомпилирована и запущена для проверки правильности работы упаковщика, вызываемого во время выполнения (Runtime Callable Wrapper, RCW).
Если вы хотите создать проект ATL СОМ самостоятельно, но у вас нет Visual Studio 6.0, создайте новый проект на основе библиотеки шаблонных классов ATL в Visual, Studio.NET. Однако в этом случае вы обнаружите, что сгенерированный код пусковой системы радикально отличается от приведенного в нашем примере кода, который был получен с помощью Visual Studio 6.0. Например, не существует файла IDL, а вместо этого используется ключевое слово _interface (интерфейс) для определения интерфейса ILegacyCOMOb] непосредственно в файле LegacyCOMOb j . h. Кроме того, Visual C++.NET в сгенерированном коде существенно использует атрибуты, и поэтому такой код даже по виду отличается от кода на обычном Visual C++. Однако, в целях обучения использованию Tlbimp.exe для компонентов на основе модели компонентных объектов Microsoft (COM), все это не имеет существенного значения.



Содержание раздела