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