Я пытаюсь добавить COM DLL VC6 в наше решение VS2010RC C #. DLL была скомпилирована с помощью инструментов VC6 для создания версии x86 и скомпилирована с помощью кроссплатформенных инструментов VC7 для создания DLL VC7.
Версия сборки x86 работает нормально, если платформа потребляющего C # проекта установлена на x86. Не имеет значения, зарегистрирована ли на самом деле версия DLL для x64 или x86. Это работает с обоими. Если для платформы установлено значение «Любой процессор», я получаю BadImageFormatException
при загрузке Interop.<name>.dll
.
Что касается версии x64, я даже не могу заставить проект собираться. Я получаю ошибку tlbimp:
TlbImp: ошибка TI0000: один действительный тип машины, совместимый с
библиотека типов ввода должна быть указана.
Кто-нибудь видел эту проблему?
РЕДАКТИРОВАТЬ:
Я гораздо больше разбираюсь в этой проблеме и думаю, что это может быть ошибка Visual Studio. У меня есть чистое решение. Я ввожу свою сборку COM с выбранным языком, не зависящим от языка «Любой процессор». Архитектура процесса получившейся Interop DLL - x86, а не MSIL.
Возможно, сейчас придется сделать Interop вручную, чтобы заставить это работать.
Если у кого-то есть другое предложение, дайте мне знать.