我使用32位架构在Microsoft Visual Studio 2013上运行C#XNA游戏项目。
尝试使用DllImport
标记在运行时加载非托管C ++ DLL时,我收到以下错误。请注意,此dll( fmod_event.dll )来自位于/ fmoddesignerapi / api /
类型' System.DllNotFoundException'的未处理异常。 附加信息:无法加载DLL' fmod_event':找不到指定的模块。(HRESULT异常:0x8007007E)
导入时代码已经跟随并失败。
[DllImport("fmod_event")]
private static extern RESULT FMOD_EventSystem_Create(ref IntPtr eventsystem);
我已将dll添加到项目的根目录,并将其设置为“如果更新则复制”。我可以确保这个dll存在于DEBUG和RELEASE bin文件夹中,位于正确的位置。
导入' fmodex.dll'通过相同的下载文件提供,位于/ api /我不会遇到同样的问题,所有内容都按预期工作,代码如下:
[DllImport("fmodex")]
private static extern RESULT FMOD_System_Create(ref IntPtr system);
这两个dll都可以在同一个bin文件夹下看到 我试图使用fmod_event.dll 32和64而没有任何运气。
任何人都可以提供有关为什么一个DLL正确加载但不能正确加载的原因吗?感谢
答案 0 :(得分:1)
DllImport
答案 1 :(得分:-1)
通常所有非托管DLL都需要注册。如果您将fmod_event.dll作为安装包的一部分,请尝试在其上运行regsvr32以进行注册。