5

我正在为 Unity3D 使用 fmod 插件。编译到 Windows 和 OSX 很好,因为我可以动态加载 DLL/dylib。当我为 iOS 编译时,问题就来了。我用

[DllImport("__Internal")]

因为 iOS 需要静态链接库。当我编译虽然我得到一个

SystemException: Duplicate native method found : FMOD_System_CreateSound. Please check your source carefully.

我很确定我没有复制这个符号。我认为这可能是因为 Unity 自己导入 FMOD 并且两者可能会发生冲突……但如果是这种情况,我很惊讶 FMOD_System_CreateSound 是第一个被抓住的。有没有解决的办法?谢谢!

与往常一样,我很乐意提供任何其他详细信息!

这是一个会导致错误的示例项目: Sample Unity Project with FMod

编辑:冲突是由于 iOS 不允许函数具有相同的名称,即使它们没有相同的签名。删除同名函数后(从而删除了一些我不需要的 FMOD 功能),我可以编译到 iOS,但正如预期的那样,我在初始化时仍然收到错误,因为 FMOD 已经被 Unity 初始化。

4

2 回答 2

2

Unity3d 已经捆绑了 FMOD 的有限版本,这导致了您所看到的冲突。不幸的是,目前似乎无法禁用它,以便您可以使用完整版的 FMOD

于 2013-04-03T14:42:21.760 回答
1

参考您的编辑并查看示例后,您确实不能拥有两个同名的方法,因为编译器将无法识别链接到哪个方法。

简单的解决方法是显然以不同的方式命名它们。

至于初始化,如果您可以访问Unity 3D已经创建的FMOD,那么您不必重新初始化它。

我假设指向该对象的指针足以删除重复的初始化。希望这很清楚。

于 2013-04-03T21:28:11.897 回答