Вопрос

Бег Corflags.exe против System.Data.SQLite.dll из http://sqlite.phxsoftware.com/ производит следующий выход.

Version   : v2.0.50727
CLR Header: 2.5
PE        : PE32
CorFlags  : 24
ILONLY    : 0
32BIT     : 0
Signed    : 1

Как вы видете, 32BIT не указан и PE равно PE32. Анкет Согласно с Переход с 32-битной к 64-битной разработке приложений на .NET Framework, это означает, что сборка Любой процессор. Анкет Однако использование сборки из 64 -битного приложения приводит к ошибке:

System.badimageformatexception: не может загрузить файл или сборку 'System.data.sqlite' или одна из его зависимостей. Была предпринята попытка загрузить программу с неправильным форматом. Имя файла: 'System.data.sqlite'

Если corflags.exe сообщает Любой процессор, почему происходит исключение? Ассамблея неправильно отмечена 32BIT: 0?

Я знаю, что есть 64-битная версия, я просто хочу знать, что вызывает ошибку.

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

Решение

Файл System.data.sqlite.dll, который вы используете, является Сборка смешанного режима, что означает, что это не чистый код .NET (см. Также флаг «Ilonly: 0»), он также содержит также неуправляемый машинный код, который не может быть «любому процессору». Таким образом, поскольку DLL содержит 32-разрядный собственный код, его можно загрузить только в 32-битный процесс, в противном случае происходит BadimageFormateXception.

Другие советы

Если вы загрузите SQLite-1.0.66.0-binaries.zip Файл из sourceforget.net, тогда это содержит корзина/x64 каталог с System.Data.SQLite.dll Файл, который вы ищете.

У него также есть каталог итания.

А URL является:

http://sourceforge.net/projects/sqlite-dotnet2/files/sqlite%20for%20ado.net%202.0/1.0.66.0/

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