Проблема с 64-разрядным COM-взаимодействием Visual Studio 2010

StackOverflow https://stackoverflow.com/questions/2450509

Вопрос

Я пытаюсь добавить библиотеку DLL VC6 COM в наше решение VS2010RC на C #.Библиотека DLL была скомпилирована с помощью инструментов VC6 для создания версии x86 и была скомпилирована с помощью кроссплатформенных инструментов VC7 для создания библиотеки DLL VC7.

Версия сборки для x86 работает нормально, пока платформа используемого проекта C # установлена на x86.Не имеет значения, действительно ли зарегистрирована версия DLL для 64 или x86.Это работает и с тем, и с другим.Если платформа настроена на "Любой процессор", я получаю BadImageFormatException о нагрузке на Interop.<name>.dll.

Что касается версии x64, я даже не могу запустить проект в сборку.Я получаю сообщение об ошибке tlbimp:

TlbImp :ошибка TI0000:Необходимо указать единственный допустимый тип компьютера, совместимый с библиотекой входных типов .

Кто-нибудь видел эту проблему?

Редактировать:

Я еще больше углубился в эту проблему и думаю, что это может быть ошибка Visual Studio.У меня есть чистое решение.Я ввожу свою COM-сборку с выбранным не зависящим от языка "Любым процессором".Архитектура процесса результирующей библиотеки DLL взаимодействия является x86, а не MSIL.

Возможно, сейчас придется выполнить взаимодействие вручную, чтобы заставить это работать.

Если у кого-нибудь есть другое предложение, дайте мне знать.

Это было полезно?

Решение

Эту проблему можно решить, открыв файл CSProj и добавив следующий узел к любому из узлов "(Конфигурация) | Любой процессор", на которых он отсутствует:

<PlatformTarget>AnyCPU</PlatformTarget>

Если этот узел отсутствует, TlbImp по умолчанию будет иметь значение x86 и вызовет проблемы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top