Как использовать ATl COM из службы Windows

С помощью мастера VS2008 я создал службу (которая в настоящее время не выполняет ничего, кроме запуска и остановки)

Я хочу использовать (вне процесса) COM-объект

Если я добавлю #import "object.tlb", то перекомпиляция даст

ошибка C2812: #import не поддерживается с /clr:pure и /clr:safë

Изменение свойств на использование /clr (не чистое или безопасное) позволяет выполнить компиляцию, но установка службы завершается неудачно с "Ättempt для загрузки непроверяемого исполняемого файла с исправлениями"

Любой совет приветствуется

Питер

1 ответ

Решение

Это явно упоминается в статье MSDN для InstallUtil.exe:

Обратите внимание, что вы не можете развернуть службу Windows, созданную с помощью C++ с помощью Installutil.exe. Installutil.exe не может распознать встроенный собственный код, созданный компилятором C++. Если вы попытаетесь развернуть службу Windows C++ с помощью Installutil.exe, будет выдано исключение, например BadImageFormatException. Для работы с этим сценарием переместите служебный код в модуль C++. Затем напишите объект установки в C# или Visual Basic.

Другие вопросы по тегам