2010-09-07 1 views
2

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

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 \ Build \ 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)

Код в вопросе прекрасно работает на моих коллег окна XP машины. В решении есть еще одна C++ DLL, которая отлично работает.

+0

Как вы отметили это Windows 7 - 64 бит, возможно ли, что ваша dll может быть 32-разрядной, или может иметь зависимость от 32-разрядной dll. Вы можете попытаться создать свой проект для платформы x86 и проверить, не исчезла ли ошибка (просто чтобы узнать, есть ли проблема с 32-разрядной/64-разрядной версией). – VinayC

ответ

2

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

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

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

+0

Неработающая DLL имела зависимости от некоторых других DLL, когда я копировал их в рабочий каталог моего проекта C#, все работало нормально. –