2017-04-25 40 views
0

我有一個簡單的「Hello world」類型的程序在Xcode中,我試圖使用外部庫,但我收到編譯錯誤。該圖書館是的MagTek edynamo MacOS的SDK:與外部庫(OSX程序)的Xcode編譯錯誤

https://www.magtek.com/Content/SoftwarePackages/1000004036.zip

(父頁面https://www.magtek.com/support/edynamo?tab=software;下載MacOS的SCRA SDK)

這是我的代碼:

#import "MTSCRA.h" 

int main (int argc, const char * argv[]) 
{ 
    MTSCRA* mtSCRALib = [[MTSCRA alloc] init]; 
    return 0; 
} 

所以基本上我只是導入庫並嘗試實例化其中的一個類。 Xcode中不顯示任何內聯編譯錯誤的任何地方,但是當我嘗試建立並運行,它會導致各種不確定的符號錯誤,如這一點:

Undefined symbols for architecture x86_64: 
    "_NSApplicationWillTerminateNotification", referenced from: 
     -[HIDManager init] in libMTSCRAOSX.a(HIDManager.o) 

和像這樣的警告:

ld: warning: object file (/path/HelloWorld/libMTSCRAOSX.a(MTSCRA.o)) was built for newer OSX version (10.12) than being linked (10.11) 

(如果我註釋掉MTSCRA* mtSCRALib = [[MTSCRA alloc] init];線,它運行良好。)

這是我走上包括在我的Xcode項目庫中的步驟:

  • 我把MTSCRA.h和libMTSCRAOSX.a放到了我的項目目錄中。
  • 從構建階段 - >鏈接二進制文件,我添加了libMTSCRAOSX.a。
  • 構建設置 - >庫搜索路徑設置爲 「$(繼承)」 和 「$(PROJECT_DIR)/ HelloWorld」 的

這是我的環境:

  • 的MacBook Pro 64位
  • OSX埃爾卡皮坦10.11.5
  • 的Xcode V8.2.1

嘗試了所有的谷歌的解決方案;沒有工作。任何幫助...任何人都可以成功導入和使用這個庫嗎?

+0

該警告說庫的構建時間爲10.12,但系統正在運行10.11。當然,你有正確的庫版本? – voltae

+0

這是他們唯一的一個。 –

+0

更新:一個錯誤是我還需要包含庫/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libstdc++.6.0.9.tbd 。包括這個之後,我剩下一個編譯錯誤:我上面提到的那個。 –

回答

0

解決了這個問題。不知道這些是菜鳥的錯誤,但我有兩個問題:

1)我還需要包括庫/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/S DKs/MacOSX.sdk/usr/l ib/libstdC++。6.0.9.t bd

2)我也必須導入#import <Cocoa/Cocoa.h>。所以:

#import "MTSCRA.h" 
#import <Cocoa/Cocoa.h> 

int main (int argc, const char * argv[]) 
{ 
    MTSCRA* mtSCRALib = [[MTSCRA alloc] init]; 
    return 0; 
}