2017-01-24 74 views
0

我想在iOS應用程序中創建一個GVRCardboardView,編寫在Xcode 8.2,Swift 3.0中。我有一個GVRVideoView正在運行,但用GVRCardboardView添加時無法讓應用程序編譯。我正在使用Bridging-Header來訪問Cardboard SDK的Objective C文件。GVRSDK iOS Xcode鏈接器錯誤

這是頭文件:

#ifndef Bridging_Header_h 
#define Bridging_Header_h 

#import "GVRWidgetView.h" 
#import "GVRPanoramaView.h" 
#import "GVROverlayView.h" 
#import "GVRVideoView.h" 
#import "GVRHeadTransform.h" 
#import "GVRCardboardView.h" 
#import "GVRAudioEngine.h" 

#endif 

和編譯時所產生的誤差......

ld: library not found for -lGVRView_arm 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

如果我從改變我的Podfile:(參考@https://github.com/googlevr/gvr-ios-sdk/blob/master/Samples/TreasureHunt/Podfile

target 'My App Name' do 
    pod 'GVRSDK/SDK' 
end 

發給至:

target 'My App Name' do 
    pod 'GVRSDK' 
end 

那麼所產生的誤差變化:

Undefined symbols for architecture armv7: 
"_OBJC_CLASS_$_GVRCardboardView", referenced from: 
    objc-class-ref in MyGVRViewController.o 
ld: symbol(s) not found for architecture armv7 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

看來現在的應用程序可以找到-lGVRView_arm代碼,但現在沒有正確連接到GVRCardboardView客觀C級。

我錯過了什麼?爲什麼我的應用程序不能編譯?

- 編輯 -

隨着誤差表示,存在用於建築的ARMv7未定義的符號,我試圖更新的設備與arm64。我仍然收到類似的錯誤。

+0

我不得不添加了「use_frameworks」,使這項工作,我相信 – SeanLintern88

+0

剛添加'use_frameworks!'到Podfile。沒有運氣 –

回答

0

據該項目的合作者之一,這是在GVRSDK最新發布的錯誤(版本1.10.0)https://github.com/googlevr/gvr-ios-sdk/issues/189

嘗試在同一個項目中使用某種形式的GVRVideoView(或其他GVRView)類和GVRCardboardView時會出現此問題。在最新版本中,這些類被分離成不同的.a文件:libGVRSDK_arm.a和libGVRView_arm.a。試圖同時下載並使用它們將導致重複的文件錯誤。

要解決此問題,使用CocoaPod以前版本具有以下Podfile和等待更新中...

target 'My App Name' do 
    pod 'GVRSDK', '1.0.1' 
end 
0

添加pod 'CardboardSDK'到您的POD文件,然後執行pod install,然後導入以下到您的橋接報

#import "GCSCardboardView.h" 
#import "GCSCardboardAudioEngine.h" 
#import "GCSHeadTransform.h" 
#import "GCSWidgetView.h" 
#import "GCSPanoramaView.h" 
#import "GCSVideoView.h" 

確保您從POD文件中刪除pod 'GVRSDK'。這種方法爲我工作在Xcode的8.2.1斯威夫特3.0.2

+0

看起來像這樣做的工作,但它只是恢復到以前版本的CocoaPod。與其將7個版本返回到v0.7.1,我能夠通過以下方式將一個版本返回到v1.0.1:'pod'GVRSDK','1.0.1'' –

+0

哦,那麼我也會移動到1.0 .1而不是0.7.1 –