2010-01-29 2 views
3

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

BadImageFormat

Не удалось загрузить файл или сборку «MyCLI, Version = 1,0 .3680.28432, Культура = нейтральная, PublicKeyToken = null ' или одна из ее зависимостей. Была сделана попытка загрузить программу с неправильным форматом .

я загрузить его в моем случае загрузки формы:

MyCLI.myCLI z; 

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

Application.Run(new Form1()); 

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

Благодаря

ответ

7

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

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

+0

Я абсолютно уверен, что это сейчас, когда вы указали на это - однако я не могу заставить свой проект C++/CLI показать что-то еще, кроме Win32, и мой проект C# отключил выпадающее меню платформы. Также обратите внимание, что я на 64-битной операционной системе –

+0

отключен? Это очень странно. Вы можете использовать Corflags.exe, чтобы сделать то же самое. Повторно запустите VS setup, чтобы получить 64-битный компилятор C/C++, он не установлен по умолчанию. –

+0

Если вы хотите скомпилировать проект C++ для x64, вам необходимо прочитать некоторые статьи, например, этот http://msdn.microsoft.com/en-us/library/h2k70f3s(VS.80).aspx –

Смежные вопросы