我也尝试了包括link在内的大多数在线资源,以将我的统一项目集成到 swift 4 本机项目中,但不幸的是直到现在为止都没有帮助。当我进行Linked修复时,出现以下 c ++ 文件错误:
No member named 'GetHostByAddr40' in 'il2cpp::icalls::System::System::Net::Dns'; did you mean 'GetHostByAddr'?
顺便说一句,我实际上是在做一个增强现实项目,该项目也具有一些本机iOS设计。从那以后,我使用 swift 4 和 Xcode 9.2 完成了这些部分。本机部分包含项目的开始和结束部分。在这两者之间,有一个增强现实部分,是通过使用 unity 2018.2.0f2 personal 和 vofuria 7.2.23 完成的。
最后,我现在有一个iOS本机项目和unity项目。我想将unity部分集成到iOS本机中!
答案 0 :(得分:1)
经过长时间的搜索,我发现了错误。
使用this描述的解决方案修复后,我最终找不到Bulk_Mono.Security_1.cpp
文件。所以我开始搜索它。然后我确定了问题所在。问题与.Net的 4.0脚本运行时版本有关。由于使用 LitJson 要求的最低版本为4.0,因此我使用4.0创建了该项目。 4.0无法为iOS生成Bulk_Mono.Security_1.cpp
文件。然后,我从项目中删除了 LitJson ,并将项目运行时版本降级为3.x等效版本,并且随着以下2个文件的更改,它开始可以正常工作。
请注意,通常像框架一样集成生成的objective-c
项目,然后进行以下更改并运行。
对DisplayManager.mm
中classes/unity
生成的文件进行了更改。自动生成的不包含return deviceUnknown;
的最后一行。所以我们必须手动编写。
elif PLATFORM_TVOS
if (!strncmp(model, "AppleTV5,", 9))
return deviceAppleTV1Gen;
else if (!strncmp(model, "AppleTV6,", 9))
return deviceAppleTV2Gen;
else
return deviceUnknown;
endif
return deviceUnknown
对位于生成的项目SplashScreen.mm
中的classes/ui
进行以下更改。将bool hasStoryboard = [[NSBundle mainBundle] pathForResource: @"LaunchScreen" ofType: @"storyboardc"] != nullptr;
更改为bool hasStoryboard = [[NSBundle mainBundle] pathForResource: @"LaunchScreen_1" ofType: @"storyboardc"] != nullptr;
。完整的方法如下。
void ShowSplashScreen(UIWindow* window)
{
bool hasStoryboard = [[NSBundle mainBundle] pathForResource: @"LaunchScreen_1" ofType: @"storyboardc"] != nullptr;
if (hasStoryboard)
{
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:
@"LaunchScreen" bundle: [NSBundle mainBundle]];
_controller = [storyboard
instantiateViewControllerWithIdentifier: @"unitySplashStoryboard"];
}
else
_controller = [[SplashScreenController alloc] init];
[_controller create: window];
[window makeKeyAndVisible];
}
这就是我整合的方式。