Я пытаюсь создать элемент управления ActiveX для приложения на устройстве Windows CE 6.0, но не могу заставить его зарегистрироваться на устройстве. Когда я передаю файл .ocx на устройство и пытаюсь зарегистрировать его с помощью regsvrce.exe, происходит сбой с ошибкой 7e, которая, как я узнал, означает, что зависимость отсутствует. Как я могу определить, какая зависимость отсутствует? Или же я ошибся при создании элемента управления ActiveX?
Я загрузил .ocx в Dependency Walker на своей машине разработки (работающей под управлением 64-разрядной версии Windows 7, если это имеет значение), и все зависимости верхнего уровня, которые он перечисляет, присутствуют на устройстве CE. Я не могу проверить дальше по дереву, так как Depends затем ищет зависимости верхнего уровня на моей машине разработки, половина из которых отсутствует, поскольку они специфичны для CE. Dependency Walker не работает на устройстве CE (если нет версии CE, которую я пропустил?). Я попытался скопировать библиотеки DLL с устройства CE на флэш-накопитель, чтобы загрузить их в DW на своей машине разработки, но устройство не позволяет мне это сделать. Инструмент OEM, который у меня есть для передачи файлов, к сожалению, передает только на устройство. [Изменить: я не пробовал писать свой собственный инструмент, чтобы пытаться извлекать файлы с устройства на машину разработки.]
Некоторые подробности о том, как я настроил проект, на случай, если у меня есть какие-то неправильные предположения по этому поводу. Я пробовал с двумя проектами. В одном есть мой код (сам элемент управления ActiveX - это просто графическое представление некоторых данных, которые я изначально настроил в элементе управления ActiveX win32, чтобы посмотреть, как он выглядит), а другой - чистый проект, созданный из шаблона, скомпилированный , загружено на устройство; код не добавлен или конфигурация не изменена. Оба имеют одинаковый результат при попытке регистрации.
- Используя VS2005, создал проект с использованием шаблона «MFC Smart Device ActiveX Control», ориентированного на SDK, который я получил от OEM.
- В случае проекта с моим кодом в нем я скопировал свой код чертежа в проект и создал необходимые свойства для ввода данных. Я могу предоставить более подробную информацию о своем коде, если это поможет, но моя проблема возникает даже без кода. Я предполагаю, что, поскольку он успешно компилируется при нацеливании на SDK от OEM-производителя, функции, которые я использую, должны быть доступны на целевом устройстве.
- Создайте проект в конфигурации выпуска (мне было интересно, отсутствовали ли библиотеки отладки на целевом устройстве и вызывали ли проблему).
- Перенесите файл .ocx на целевое устройство с помощью инструмента OEM.
- Запустите командную строку на целевом устройстве, перейдите в каталог, в котором находится .ocx, запустите regsvrce.exe .ocx. Я также попытался перенести все файлы, которые VS оставляет в выходной папке сборки, но результат тот же.
Большое спасибо за любые ответы! Если вы видите что-то очевидное, укажите на это - это мой первый проект ActiveX и мой первый проект CE, так что вполне возможно, что мне не хватает чего-то базового.