如何摆脱Xcode中的“未知类型名称'__declspec'”错误

时间:2016-02-04 04:47:04

标签: ios xcode unity3d google-cardboard

我尝试在Xcode中构建并运行我的第一个Google Cardboard项目。

我第一次遇到的事情基本上说我的签名不正确,并要求我登录以便计算机可以修复它(它似乎)。 (如果它以某种方式与错误相关,我会包含此信息。)

然后我遇到了错误Unknown type name '__declspec',并且不知道如何解决它。

此问题也在here找到,但没有答案。 Google search产生了大约50个结果,因此它似乎相对不常见。

什么是我最好的行动方案?

4 个答案:

答案 0 :(得分:15)

如果您无法升级到修复此功能的Unity版本,我可以修复此问题。

在Unity应用程序中找到名为il2cpp-codegen.h的3个文件。例如,在Mac Unity上,他们就在这里:

/Applications/Unity5.1.4/Unity.app/Contents/PlaybackEngines/WebGLSupport/BuildTools/Libraries/libil2cpp/include/codegen/il2cpp-codegen.h
/Applications/Unity5.1.4/Unity.app/Contents/PlaybackEngines/iossupport/il2cpp/libil2cpp/include/codegen/il2cpp-codegen.h
/Applications/Unity5.1.4/Unity.app/Contents/Frameworks/il2cpp/libil2cpp/codegen/il2cpp-codegen.h

在这些中找到这一行:

NORETURN static void il2cpp_codegen_raise_exception (Il2CppCodeGenException *ex)

删除" NORETURN"从每个,并保存文件。它现在应该工作。

答案 1 :(得分:2)

Unity刚刚发布了新版本5.3.2,以解决这个问题。

答案 2 :(得分:2)

我在嵌入C ++ DLL的库中遇到了类似的问题。

如果您不想升级,我相信您可以替换:

Product::with('filters')->where('filter_id', 10)->first()->data;

通过

#define NORETURN __declspec(noreturn)

答案 3 :(得分:0)

对于每个抛出错误的文件,应该只从那些行中删除 NORETURN

但有时问题不是 NORETURN ,但必须删除 IL2CPP_NO_INLINE

这应解决问题。