BadImageFormatException всегда является верным признаком того, что ваша программа использует DLL с неправильной разрядностью.Проблемой в вашем случае является библиотека взаимодействия, созданная для элемента управления ActiveX в вашем проекте C ++ / CLI.Вот что вы увидите, что вы запускаете на нем corflags.exe:
C:\projects\atl\test_atl - VC++\x64\Debug>corflags Interop.atl_project_64Lib.1.0
.dll
Microsoft (R) .NET Framework CorFlags Conversion Tool. Version 4.0.30319.1
Copyright (c) Microsoft Corporation. All rights reserved.
Version : v4.0.30319
CLR Header: 2.5
PE : PE32
CorFlags : 3
ILONLY : 1
32BIT : 1
Signed : 0
Обратите внимание, что флаг 32BIT включен, kaboom там.Эта проблема началась, когда вы добавили ссылку на библиотеку типов в ваш проект C ++ / CLI.К сожалению, инструмент, который генерирует библиотеку взаимодействия («Managed Wrapper Generator Tool»), создает библиотеку взаимодействия, которая является только 32-битной.Трудно назвать это чем-то еще, кроме ошибки.Я могу видеть, как это произошло, но библиотеки типов тоже имеют (небольшую) зависимость от битности.
Исправьте эту проблему, запустив Tlbimp.exe самостоятельно, вместо того, чтобы полагаться на IDE, чтобы ошибиться.У вас уже есть библиотека взаимодействия, которая хороша между прочим, библиотека в проекте C # правильная и с выключенным флагом 32BIT.Что-то странное с этим проектом, кстати, библиотека взаимодействия застряла в каталоге obj.Не уверен, как это случилось, не выглядело.