Вызов C ++ .dll из C # вызывает ошибку во время выполнения - PullRequest
1 голос
/ 02 августа 2010

Следующая строка генерирует ошибку времени выполнения в графическом интерфейсе C #:

int x = myclass.number_from_dll();

Я использую Microsoft Visual Studio 2008.

Код в C #:

class myclass
{
  [DllImport("strat_gr_dll.dll", EntryPoint = "number_from_dll")]
  public static extern int number_from_dll();
}

Код в C ++ .dll:

// This is an example of an exported function.

DLL int number_from_dll(void)
{
  return 42;
}

Ошибка времени выполнения из .NET:

An attempt was made to load a program with an incorrect format.
(Exception from HRESULT: 0x8007000B)

1 Ответ

4 голосов
/ 02 августа 2010

Проект + Свойства, вкладка "Сборка", Цель платформы = x86.

Ваша C / C ++ DLL была скомпилирована в 32-битном режиме. Но ваша программа на C # работает в 64-битной версии Windows и будет работать в 64-битном режиме. Эта смесь не совпадает. Создание 64-битной версии вашей DLL является еще одним решением. Build + Configuration Manager, платформа со списком, новая, x64.

...