【发布时间】:2016-04-04 12:06:16
【问题描述】:
我正在使用 32 位架构的 Microsoft Visual Studio 2013 上运行 C# XNA 游戏项目。
尝试在运行时使用 DllImport 标记加载非托管 C++ DLL 时,出现以下错误。请注意,此 dll (fmod_event.dll) 来自位于 /fmoddesignerapi/api/ 下的 FMOD Ex Programmer’s 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 文件夹中的正确位置。
当通过相同的下载文件导入位于 /api/ 下的“fmodex.dll”时,我没有遇到同样的问题,并且使用以下代码一切正常:
[DllImport("fmodex")]
private static extern RESULT FMOD_System_Create(ref IntPtr system);
这两个 dll 都可以在同一个 bin 文件夹下看到。
我尝试使用 fmod_event.dll 32 和 64,但没有任何运气。
谁能提供任何关于为什么一个 DLL 正确加载而另一个 DLL 加载不正确的见解?谢谢
【问题讨论】:
-
any 导入是否适用于 fmod_event.dll?您能否确认这两个 DLL 立即位于 Debug 或 Release 文件夹中?为什么需要将它们复制到子文件夹?
-
我倾向于不从未知来源下载 DLL。