sabo
sabo

Reputation: 943

Moving unity 5 project from windows to mac to implement iOS results in "symbol(s) not found for architecture arm64" error

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

Answers (1)

sabo
sabo

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

Related Questions