3

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

1 Answer 1

3

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.

4
  • I don't have any checkboxes stating "Symlink Unity Libraries". Is it something included in Unity Pro? Commented Feb 8, 2016 at 23:38
  • @ErhanEmreEroglu I have Unity Personal. It should be listed in Build Settings where you can choose Developement Build as well. If it does not show up the only thing I can think is maybe it has changed in newer versions.
    – sabo
    Commented Feb 9, 2016 at 1:53
  • I figured out that Symlink option is present in Unity for Mac not for Windows. So,it's not about Pro or not... Commented Feb 14, 2016 at 16:56
  • @ErhanEmreEroglu Right, you need a mac to build and test iOS unless you have a hackintosh.
    – sabo
    Commented Feb 14, 2016 at 17:02

Not the answer you're looking for? Browse other questions tagged or ask your own question.