簡體   English   中英

我可以在我的iPhone應用程序中使用動態庫(共享對象)嗎?

[英]can I use dynamic library(shared object) in my iphone app?

眾所周知,靜態庫可以在Iphone應用程序中很好地工作,並且您的應用程序可以很容易地被IOS App Store批准

不幸的是,我現在使用的兩個靜態庫有一些C函數和變量。

所以我將它們編譯成* .dylib(動態庫),並將它們復制到XCode中的“Bundle Resources”。

dylib_handle = dlopen(dylib_path_in_resource_bundle, RTLD_LAZY);
func = dlsym(dylib_handle, "func");

// invoke func();

這在模擬器和Ipad(當然,不同的動態庫)中運行良好。

我注意到有人說Iphone應用程序不支持任何第三方動態庫,我的應用程序將被拒絕。 (看這里)

但我仔細閱讀了“App Store評論指南”,我發現沒有任何項目符合我的問題。

我現在很困惑!

iphone應用程序是否支持動態庫? IOS AppStore是否允許這樣做?

誰能給我官方回復。

正如貝爾納多·拉莫斯在評論中所述:“自iOS8以來,我們可以使用動態庫”。

App Store不允許使用動態庫。 在運行時不能加載任何代碼。 答案是將它們轉換為靜態庫並將它們編譯到應用程序中。

來自iPhoneOSTechOverview:

“如果要將框架或動態庫中的代碼集成到應用程序中,則應在構建項目時將該代碼靜態鏈接到應用程序的可執行文件中。”

讀“應該”為“必須”

請參閱答案: 可以為iOS創建動態庫嗎?

不,不允許使用動態庫。

但是你可以創建靜態庫,甚至是“靜態框架”(就像經典框架一樣,是一個帶有“.framework”擴展名的文件夾,包含你的Headers,資源文件,如果有的話)和lib本身,除了你的lib必須是靜態庫)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM