Построение Proxy / Stub dll в VS 2008 - PullRequest
3 голосов
/ 26 июня 2009

У меня есть проект ATLCOM, перенесенный с VC6 на VS2008. У меня вопрос, как мне собрать PS Dllon VS 2008?

Новые ATL-проекты в VS2008 имеют отдельный PS-проект, который создает ps dll. Но миграция из VC6 не создала этот проект.

Я попытался вызвать nmake для файла ps mk, но это дает ошибку переопределения для типа enum, который существует как в нашем исходном файле, так и в автоматически включаемом заголовочном файле Windows. В решении мы исправили это, определив препроцессор WIN32_LEAN_AND_MEAN, который исключает ненужные заголовочные файлы. Могу ли я сделать то же самое при использовании nmake?

Есть ли другой способ создания ps dll?

Ответы [ 2 ]

2 голосов
/ 26 июня 2009

Предложения Эрана кажутся логичными, но я не смог найти некоторые из предметов, о которых он говорил. Поэтому я попробовал другой подход.

Я создал проект Empty ATL (Server) в VS 2008. Он автоматически создает проект ps вместе с обычным проектом atl.

Я скопировал файл vcproj для проекта ps в папку моего проекта и переименовал его в myprojectname ps.vcproj.

Затем я открыл свое решение и добавил в него вновь скопированный проект. Я переименовал проект (в VS 2008) в myprojectname ps и удалил все файлы, которые уже были включены в него.

Затем я включил в проект мои файлы _i.c, _p.c, dlldata.c и .def . В настройках Linker> Input> Файл определения модуля я добавил имя файла def.

Вот и все! Работал как шарм.

0 голосов
/ 26 июня 2009

Прошло много времени с тех пор, как я это сделал, и даже тогда у меня не было никаких актуальных инструкций, но сейчас, оглядываясь назад на проект, я попытаюсь восстановить процесс:

  1. Создайте новый пустой проект DLL для PS. Не требуется MFC или ATL.
  2. Добавьте в проект следующие файлы: proj _h.h, proj _i.c, proj _p.c, proj .def, dlldata.c
  3. В настройках проекта добавьте следующие библиотеки к дополнительным зависимостям: rpcndr.lib, rpcns4.lib, rpcrt4.lib
  4. В настройках проекта укажите файл def в качестве файла определения модуля.
  5. В настройках проекта установите «Генерировать тупиковые прокси» как Да.
  6. В настройках проекта установите файл tlb как файл, сгенерированный сервером проекта

Это то, что я мог бы получить, посмотрев мой проект. Я мог пропустить некоторые шаги, и мог бы быть лучший способ сделать это. OTOH, у меня не было никаких проблем с сгенерированным PS, и вы могли бы заполнить пробелы, как вы идете. Если вы попробуете это и обнаружите какие-либо ошибки, добавьте комментарий для дальнейшего использования.

...