C # DLL проблема в Windows 7 - PullRequest
       32

C # DLL проблема в Windows 7

2 голосов
/ 07 сентября 2010

У меня точно такая же проблема, как у автора этого вопроса . У меня есть проекты Visual Studio C #, из которых я пытаюсь вызвать функцию в другой DLL (которая также является частью решения).

DLL - это библиотека C ++, и экспортированная функция, которую я пытаюсь вызвать, объявлена ​​в C # следующим образом:

[DllImport("SomeDLL.dll")]
private extern static IntPtr SomeFunction(IntPtr someVar1, IntPtr someVar2, bool someVar3);

Когда я пытаюсь вызвать функцию из C #, я вижу следующее в выводе консоли в отладчике:

'MyApp.exe': загружен 'C: \ SomePath \ Построение \ Eddy \ Debug \ SomeDLL.dll'
'MyApp.exe': выгружен 'C: \ SomePath \ Построение \ Eddy \ Debug \ SomeDLL.dll'
'MyApp.exe': загружен 'C: \ SomePath \ Построение \ Eddy \ Debug \ SomeDLL.dll'
'MyApp.exe': выгружен 'C: \ SomePath \ Построение \ Eddy \ Debug \ SomeDLL.dll'

И я получаю следующее сообщение об ошибке:

Невозможно загрузить DLL 'SomeDLL.dll': указанный модуль не может быть найден. (Исключение из HRESULT: 0x8007007E)

Код, о котором идет речь, прекрасно работает на моем компьютере с Windows XP. В решении также есть еще одна C ++ DLL, которая прекрасно работает.

1 Ответ

2 голосов
/ 07 сентября 2010

Кажется, проблема в том, что SomeDll.dll не может быть загружен. Существует несколько причин, по которым это может произойти, и некоторые из них:

  1. DLL является 32-битной, и вы запускаете 64-битный процесс (или наоборот).
  2. SomeDLL.dll имеет некоторые дополнительные зависимости (другие dll: s или COM-компоненты), которые недоступны.

Вы можете запустить Dependeny Walker: http://www.dependencywalker.com/ на вашем somedll.dll, чтобы проверить, является ли проблема пунктом 2.

...