Я запускаю игровой проект 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 загружается правильно, а другая нет? Спасибо
DllImport
Обычно все неуправляемые библиотеки DLL требуют регистрации. Если вы получили fmod_event.dll как не часть установочного пакета, попробуйте запустить regsvr32 на нем, чтобы зарегистрировать его.