BadImageFormatException при загрузке 32-битной DLL, цель - x86 - PullRequest
33 голосов
/ 28 апреля 2010

У меня есть DLL (FreeType), которая, безусловно, 32-битная (заголовок: IMAGE_FILE_MACHINE_I386).

Я хочу использовать ее из кода C #, используя DllImport.

Цель моего приложенияэто x86, IntPtr.Size это 4, процесс 32-битный.

Но я получаю BadImageFormatException (исключение из HRESULT: 0x8007000B).Что может быть не так?

Конечно, я использую 64-битную Windows 7.

Ответы [ 11 ]

0 голосов
/ 06 мая 2013

У меня было то же исключение в MS Visual C # Express 2010. Я проверил все файлы сборки .dll и .exe с помощью Dependency Walker и MiTeC EXE Explorer, все было собрано для 32-битного!

В итоге в моем файле .csproj отсутствовала следующая строка:

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'MY_CONFIG|x86'">
    ...
    <PlatformTarget>x86</PlatformTarget>
    ...
</PropertyGroup>

Я не знаю, почему этого не было ... Я думаю, что MS Visual C # Express 2010 не без ошибок;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...