问题
在Unity中将Playersetting下的Scripting Backend的Mono切换成IL2CPP,然后导出Anbdroid工程出现一长串报错提示。
Failed running C:\Program Files\Unity\Editor\Data\il2cpp/build/il2cpp.exe --convert-to-cpp --emit-null-checks --enable-array-bounds-check --dotnetprofile="unityaot" --compile-cpp --libil2cpp-static --platform="Android"
这句提示仔细看可以看到有提示C#中的方法未定义(undefined reference to ‘CallSDK’)
D:\ZombieSvn\bbsqs\Program\ZombiePorject\Temp\StagingArea\Il2Cpp\il2cppOutput/Bulk_Assembly-CSharp_5.cpp:32454: error: undefined reference to 'CallSDK'
clang++.exe: error: linker command failed with exit code 1 (use -v to see invocati
提示这个CallSDK未被定义,而在C#中我是由定义这个方法的,CallSDK是导出到外部的一个C接口函数,在XCode中实现的一个函数
[DllImport("__Internal")]
public static extern void CallSDK(string type, string message);
原因
其实是因为初步转il2cpp,iOSSDK的一些方法在Android平台没有,所以这个导出到外部的函数宏修饰一下
#if UNITY_IOS && !UNITY_EDITOR
[DllImport("__Internal")]
public static extern void CallSDK(string type, string message);
#endif