Reputation: 943
I have a game that I created in Unity 5 on my pc. It implements the Vungle Unity plugin for video ads. It runs perfectly fine on Android but as soon as I copied the project, moved it to my mac, switched the platform to iOS, and tried to build it, I get the error: symbol(s) not found for architecture arm64.
I have been researching this for days and have had zero luck figuring out a resolution. The architecture in Unity was set to universal and it is set to build a device sdk. I am trying to test on an iPhone 5. It runs fine on simulators, just not when trying to launch it on a real device.
Here is the full error I get:
Undefined symbols for architecture arm64:
"__vungleClearCache", referenced from:
_VungleBinding_clearCache_m756 in Bulk_Assembly-CSharp-firstpass_0.o
_VungleBinding__vungleClearCache_m755 in Bulk_Assembly-CSharp-firstpass_0.o
(maybe you meant: _VungleBinding__vungleClearCache_m755)
"__vungleClearSleep", referenced from:
_VungleBinding_clearSleep_m758 in Bulk_Assembly-CSharp-firstpass_0.o
_VungleBinding__vungleClearSleep_m757 in Bulk_Assembly-CSharp-firstpass_0.o
(maybe you meant: _VungleBinding__vungleClearSleep_m757)
"__vungleEnableLogging", referenced from:
_VungleBinding_enableLogging_m746 in Bulk_Assembly-CSharp-firstpass_0.o
_VungleBinding__vungleEnableLogging_m745 in Bulk_Assembly-CSharp-firstpass_0.o
(maybe you meant: _VungleBinding__vungleEnableLogging_m745)
"__vungleGetEndPoint", referenced from:
_VungleBinding__vungleGetEndPoint_m761 in Bulk_Assembly-CSharp-firstpass_0.o
(maybe you meant: _VungleBinding__vungleGetEndPoint_m761)
"__vungleIsAdAvailable", referenced from:
_VungleBinding_isAdAvailable_m748 in Bulk_Assembly-CSharp-firstpass_0.o
_VungleBinding__vungleIsAdAvailable_m747 in Bulk_Assembly-CSharp-firstpass_0.o
(maybe you meant: _VungleBinding__vungleIsAdAvailable_m747)
"__vunglePlayAdEx", referenced from:
_VungleBinding__vunglePlayAdEx_m750 in Bulk_Assembly-CSharp-firstpass_0.o
(maybe you meant: _VungleBinding__vunglePlayAdEx_m750)
"__vunglePlayAdWithOptions", referenced from:
_VungleBinding__vunglePlayAdWithOptions_m749 in Bulk_Assembly-CSharp-firstpass_0.o
(maybe you meant: _VungleBinding__vunglePlayAdWithOptions_m749, _VungleBinding__vunglePlayAdWithOptionsEx_m751 )
"__vunglePlayAdWithOptionsEx", referenced from:
_VungleBinding__vunglePlayAdWithOptionsEx_m751 in Bulk_Assembly-CSharp-firstpass_0.o
(maybe you meant: _VungleBinding__vunglePlayAdWithOptionsEx_m751)
"__vungleSetEndPoint", referenced from:
_VungleBinding__vungleSetEndPoint_m759 in Bulk_Assembly-CSharp-firstpass_0.o
(maybe you meant: _VungleBinding__vungleSetEndPoint_m759)
"__vungleSetSoundEnabled", referenced from:
_VungleBinding_setSoundEnabled_m744 in Bulk_Assembly-CSharp-firstpass_0.o
_VungleBinding__vungleSetSoundEnabled_m743 in Bulk_Assembly-CSharp-firstpass_0.o
(maybe you meant: _VungleBinding__vungleSetSoundEnabled_m743)
"__vungleStartWithAppId", referenced from:
_VungleBinding__vungleStartWithAppId_m741 in Bulk_Assembly-CSharp-firstpass_0.o
(maybe you meant: _VungleBinding__vungleStartWithAppId_m741)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
I have been working on this for way too long and it is just not working out very well. Here are a few things I have tried:
1) Change architectures to Standard Architectures (armv7 arm64)
2) Change "Build active architecture only" to NO
3) Change "Dead code stripping" to NO
4) Add $(inherited) to "Other Linker Flags"
5) Make sure the VungleSDK.framework is added to the binary links
9/26/15
From everything that I have read online, these errors mean that I should be missing a framework, most likely one that would have the VungleBinding file in it. The VungleBinding.m file is not part of the framework though and if I link the VungleBinding.m file by itself, I still get these errors. However this VungleBinding.m file does contain the methods that are referenced in the error message provided.
9/27/15
Well this is just great...I now realize that the only simulators that are working are for the iPhone 5 and older. Anything newer than that gives me this error:
dyld: Symbol not found: _CloseZStream
Upvotes: 3
Views: 1712
Reputation: 943
In my case I was able to fix this issue by doing the following:
Before building the project for iOS in Unity, after switching the platform to iOS, makes sure to click "Symlink Unity Libraries."
After building the app with this checked, I was able to use all simulators and also build to a device.
Upvotes: 3