C ++ / CLI / C # BadImageFormat Exception при загрузке формы

Я создал сборку C ++ / CLI, которая создает оболочку для собственного кода C ++. Ресурс компилируется, и сборка отлично загружается в мой проект C #, когда я добавляю его в качестве ресурса. Я могу получить доступ к своим объектам и intellisense из своего приложения, но при попытке сборки происходит сбой с исключением:

BadImageFormat

Не удалось загрузить файл или сборку MyCLI, Version = 1.0.3680.28432, Culture = нейтральный, PublicKeyToken = null или одну из их зависимостей. Была сделана попытка загрузить программу с неверным форматом.

Я загружаю его в событие загрузки формы:

MyCLI.myCLI z;

... и когда я компилирую, он вылетает в этой строке в моем основном конструкторе на C #

Application.Run(new Form1());

Кто-нибудь знает, что может вызвать это исключение?

Спасибо


person George Johnston    schedule 29.01.2010    source источник


Ответы (1)


Вы пытаетесь запустить этот код в 64-битной операционной системе. Ваш код C # будет красиво скомпилирован в 64-битный машинный код. Но вы столкнетесь с проблемой, когда он попытается загрузить 32-битную сборку C ++ / CLI.

В проекте C # используйте Project + Properties, вкладку Application, Platform Target = x86. Также возможно создание 64-битной версии вашей сборки C ++ / CLI, используя Build + Configuration Manager. Использование Platform Target - лучшее решение.

person Hans Passant    schedule 29.01.2010
comment
Я абсолютно уверен, что именно сейчас вы указали на это - однако я не могу заставить свой проект C ++ / CLI отображать что-либо, кроме Win32, а в моем проекте C # раскрывающийся список целевой платформы отключен. Также обратите внимание, что я использую 64-битную операционную систему. - person George Johnston; 29.01.2010
comment
Неполноценный? Это очень странно. Вы можете использовать Corflags.exe, чтобы сделать то же самое. Повторно запустите установку VS, чтобы получить 64-битный компилятор C / C ++, он не установлен по умолчанию. - person Hans Passant; 29.01.2010
comment
Если вы хотите скомпилировать проект C ++ для x64, вам необходимо прочитать некоторые статьи, например эту, msdn.microsoft.com/en-us/library/h2k70f3s (VS.80) .aspx - person Lex Li; 29.01.2010
comment
В Visual Studio 2008 целевая платформа находится на вкладке «Сборка». Убедитесь, что вы изменили цель на самой вкладке, а не цель «Конфигурация» вверху. - person lfalin; 17.02.2011