Неуправляемая DLL C ++ в C # ошибка импорта во время выполнения

Я запускаю игровой проект C # XNA в Microsoft Visual Studio 2013 с использованием 32-разрядной архитектуры.
При попытке загрузить неуправляемую C ++ DLL во время выполнения, используя DllImport тег, я получаю ошибку ниже. Обратите внимание, что это dll (fmod_event.dll) происходит от API программиста FMOD Ex находится в / fmoddesignerapi / api /

Необработанное исключение типа ‘System.DllNotFoundException’.
Дополнительная информация: Невозможно загрузить DLL ‘fmod_event’: указанный модуль не найден. (Исключение из HRESULT: 0x8007007E)

Код был соблюден и не удалось во время импорта.

[DllImport("fmod_event")]
private static extern RESULT FMOD_EventSystem_Create(ref IntPtr eventsystem);

Я добавил dll в корневой каталог проекта и установил для него значение «Копировать, если новее». Я могу гарантировать, что эта DLL присутствует в папках bin DEBUG и RELEASE, в нужном месте.

При импорте файла «fmodex.dll», доступного через тот же файл загрузки и находящегося в каталоге / api /, я не сталкиваюсь с той же проблемой, и все работает, как ожидается, со следующим кодом:

[DllImport("fmodex")]
private static extern RESULT FMOD_System_Create(ref IntPtr system);

Оба этих dll можно увидеть в одной папке bin.
Я пытался использовать fmod_event.dll 32 и 64 без удачи.

Может кто-нибудь дать представление о том, почему одна DLL загружается правильно, а другая нет? Спасибо

3

Решение

  • Укажите .DLL как расширение
  • Убедитесь, что файл существует в PATH, или укажите полный путь в DllImport
  • Проверь это зависимые модули существуют для этой DLL. Используйте Dependency Walker, чтобы узнать, существуют ли зависимые библиотеки DLL и являются ли они загружаемыми.
  • проверьте 32-битную и 64-битную проблему. 32-битный процесс не может загрузить 64-битную DLL, и наоборот
1

Другие решения

Обычно все неуправляемые библиотеки DLL требуют регистрации. Если вы получили fmod_event.dll как не часть установочного пакета, попробуйте запустить regsvr32 на нем, чтобы зарегистрировать его.

-1

По вопросам рекламы [email protected]