iOS invalid bitcode signature等常見錯誤

關(guān)于 invalid bitcode signature

今天拾起了一個老項目,調(diào)試了一下,出現(xiàn)如下錯誤。

image

慣例Google了一下,搜索的關(guān)鍵字為:invalid bitcode signature,解決的方案很多,如下所示:

invalid bitcode signature解決方案

1.Clean重啟

首先要做的就是網(wǎng)管的終極套路,關(guān)機重啟,所以我們遇到問題當然就是Clean Project and Build,不行就Restart Xcode,其實很多莫名奇怪的問題都可以通過這樣的方案搞定,畢竟Xcode確實bug不少,不知道是不是我的mac性能差,我的Xcode就經(jīng)常出現(xiàn)找不到頭文件或者聯(lián)想不出關(guān)鍵字的問題。

2.修改Bitcode檢測
image

Bitcode.png

3.Build Active Architecture Only設(shè)置
image

Build Active Architecture Only.png

我把所有的組合搭配都試過了,Debug -> YES/NO,Release -> YES/NO,各種搭配,各種配搭,無奈,It doesn't work。

4.刪除DerivedData文件夾

打開xcode找到Products文件夾 -> Products文件夾里的.app文件,show in Finder 選擇三欄顯示模式 -> 往前滑找到DerivedData文件夾, 刪除 。

image

DerivedData.png

It doesn't work。

5.Custom Compiler Flags

在Building Seting -> 中 -> Custom Compiler Flags加 -> -fembed-bitcode

image

Custom Compiler Flags.png

It doesn't work。

至此,基本上Google上所有的方案都是這幾個,然而都沒有解決我的問題,所以果斷換關(guān)鍵字搜索,也就是linker command failed with exit code 1,可能出現(xiàn)的兩個Error都是因為linker command failed with exit code 1。

linker command failed with exit code 1解決方案

1,看看是不是有新添加的文件跟之前文件同名
2,錯誤信息中出現(xiàn)了某個類的名字,去原文件中看看#import了哪些第三方庫,把這些庫挨個注釋排除,找到出錯的那個庫,然后按照官方提供的步驟重新添加一遍。
3.SVN或git忽略了某些文件,如.o 等文件沒能update下來,查看.o文件可能是紅色的,可以重新添加或者修改SVN(git)的忽略設(shè)置
4.把.a文件刪除再重新拖到項目中解決問題
5.可能重復添加了文件(也可能沒勾選 Copy items if neded 這個選項),建議刪除后重新添加
6.工程中文件名重復了 也會出現(xiàn)同樣的錯誤
7.”Build Settings”->”Enable Bitcode”設(shè)置為NO ,因為有些SDK不支持Bitcode
8.可能在引用的時候 可能寫的是#import "XXXXX.m" ,如果是改為#import "XXXXX.h"
9.可能你導入的SDK只能在真機下才能運行,模擬器會報錯!
10.找到 Build settings->Linking->Other Linker Flags將此屬性修改成-all_load 或者 -ObjC
11.Build settings->Search Path->Library Search Paths 添加靜態(tài)庫的相應路徑

我的解決方案

以上方案我基本上都做了,無奈還是沒搞定,我就在猜測是不是靜態(tài)庫版本的問題,因為我的Xcode已經(jīng)升級到了最新的版本,而項目是挺老的項目了,所以秉承著打破砂鍋問到底的精神果斷去下載老版本的Xcode,通常我們可以在App Store應用商店中免費下載Xcode的最新版本,但如果我們想要獲取特定版本呢?蘋果在開發(fā)者網(wǎng)站中提供了歷史所有版本的系統(tǒng)和開發(fā)工具的下載,網(wǎng)址:developer.apple.com/download/mo…
幸運的是公司的網(wǎng)絡(luò)比較快,Xcode7很快下載下來了,然后及時如何讓兩個版本共存,其實直接給Xcode改名即可,可以一個版本保留原名,另一個版本加上版本號。也可以給多個版本都加上版本號,例如Xcode7和Xcode8。需要注意的是,如果你有使用第三方開發(fā)工具,請盡量避免在名稱中出現(xiàn)空格。
Xcode安裝好了以后,果斷真機調(diào)試,你猜的沒錯Could not find Developer Disk Image,公司最低版本的手機為iOS 9.3.5的iPhone4s,而我下載的Xcode7最高支持的設(shè)備為iOS 9.0,此時解決的辦法有兩個,要么升級Xcode,要么下載該Disk Image,兩者相比較當然是厚顏無恥的去問別人要了一個9.3版本的Disk Image,然后放到/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport目錄下,重啟Xcode,編譯運行通過。

iOS 經(jīng)典錯誤library not found for -lXXX

開發(fā)中經(jīng)常會和ibrary not found for -xxx打交道,尤其是我們從遠程倉庫或者github clone下來一個項目,編譯很有可能報這個錯誤。如下圖:

image

library not found for -lXXX 屬于iOS經(jīng)典錯誤之一。下面我們通過復現(xiàn)這個錯誤的方式來說明這個錯誤的解決方法。其中l(wèi)是lib(library)的意思。

首先聲明,我的工程中引用了友盟的統(tǒng)計SDK,名稱叫做libMobClickLibrary.a。存儲在 third_party目錄下,如下圖(左圖為libMobClickLibrary.a在工程目錄/虛擬目錄的位置,右圖為libMobClickLibrary.a在磁盤目錄/物理目錄的位置):

image
image

沒有配置Library Search Paths導致報錯

(1)刪除building setting -> Library Search Paths下的 $(PROJECT_DIR)/YunFu/third_party/UMAnalytics。如下圖:
那么,你可能會問,為什么要刪除這個路徑而不是其他的路徑呢?因為我知道這個路徑就是libMobClickLibrary.a靜態(tài)庫的目錄。

image

(2)command + B編譯項目,然后不出所料,我們會遇到下面這個錯誤:

image

(3)點開這個錯誤,然后就能看到這個經(jīng)典錯誤,如下圖:
這個錯誤的意思是找不到名字叫做 MobClickLibrary的庫。

image

至此,我們可知,就因為我們在Library Search Paths下刪除了$(PROJECT_DIR)/YunFu/third_party/UMAnalytics 導致報這個library not found for -lMobClickLibrary的錯誤。所以下次遇到同類問題,我們便可知道某個靜態(tài)庫的路徑可能沒有配置。

結(jié)論一:沒有配置靜態(tài)庫的search路徑導致出現(xiàn)library not found for lXXX。
注意:設(shè)置的路徑必須是靜態(tài)庫在磁盤下的路徑(物理目錄),不能設(shè)置為項目的虛擬目錄。拿此例來說,libMobClickLibrary.a的在項目中是放在third_party文件夾下的,而其真正的磁盤路徑是third_party下的UMAnalytics文件夾。


沒有正確配置Library Search Paths導致報錯

上面的情況是,我們沒有配置某個靜態(tài)庫的路徑會導致library not found for lXXX錯誤。而有時候,我們確實在Library Search Paths下配置了靜態(tài)庫路徑,卻依然報同樣錯誤。此時我們就要考慮,這個路徑配置的到底對不對。如下圖(分別是libMobClickLibrary.a正確的路徑和錯誤的路徑):
正確路徑:

image

錯誤路徑(去掉了最后一級目錄"/UMAnalytics"):

image

編譯項目依然會報同樣的錯誤library not found for -lMobClickLibrary.a,如下圖:

image

歸根到底,原因在于,我們雖然跟他指定了libMobClickLibrary.a的目錄,但是在所指定的目錄下沒有搜索到靜態(tài)庫libMobClickLibrary.a。此時又分為兩種情況:

  • 情況一:如果我們指定的目錄和靜態(tài)庫libMobClickLibrary.a的目錄完全不相關(guān),那么需要重新到Library Search Paths下設(shè)置(注意:設(shè)置的是靜態(tài)庫的磁盤路徑)。

  • 情況二:如果我們指定的目錄和靜態(tài)庫的目錄有關(guān)系。即,我們指定的目錄是靜態(tài)庫所在目錄的上級目錄,或者是上上級目錄。這種情況下,無需指定靜態(tài)庫的精確的路徑,只需要把non-recursive選項修改為recursive即可。如下圖:

    image

因為recursive選項代表在我們指定的目錄下遞歸搜索靜態(tài)庫。即,如果在當前目錄沒有搜索到靜態(tài)庫,那么就去當前目錄的子目錄下繼續(xù)搜索。默認情況下是non-recursive(非遞歸)的。

結(jié)論二:雖然Library Search Paths 中配置了靜態(tài)庫的search路徑。但是沒有正確配置而導致出現(xiàn)library not found for lXXX。


導入第三方framework靜態(tài)庫編譯報錯xxx.h file not found

上面講的是當我們項目導入的是.a靜態(tài)庫,但因為沒有在 Library Search Paths 中配置.a靜態(tài)庫的search路徑,或者是雖然配置了路徑但是路徑配置錯誤而導致出現(xiàn)library not found for -xxx錯誤的解決辦法。
但我們知道,在iOS中,靜態(tài)庫有兩種形式:.a格式的靜態(tài)庫和.framework格式的靜態(tài)庫。
那么如果我們的項目中引入了.framework格式的靜態(tài)庫要不要配置search路徑呢?答案是肯定的,無論我們以什么方式導入.framework靜態(tài)庫(cocoapods的方式或者直接把framework靜態(tài)庫拖拽到項目中的方式),如果沒有配置framework的search路徑,同樣會報錯,但報的錯誤卻是和.a格式的靜態(tài)庫有些不同,如果我們項目中引入了framework格式靜態(tài)庫也使用了靜態(tài)庫(所謂使用就是import了framework靜態(tài)庫中的某個頭文件),但沒有配置search路徑,那么就會報 xxx.h file not found 這類錯誤。如下圖:

image

因為我的項目中引入了一個叫做PushCenterSDK.framework的靜態(tài)庫。同時也使用了這個靜態(tài)庫中的某個API。如下圖所示,分別是靜態(tài)庫在項目中的路徑和磁盤路徑:

image
image

我們依然采用復現(xiàn)問題的方式來驗證解決錯誤的方法,首先,我的項目是可以編譯通過的,然后嘗試在build setting -> Framework Search Paths 下刪除PushCenterSDK.framework的搜索路徑(磁盤路徑),下圖分別是刪除前和刪除后的截圖:

刪除前:

image

刪除后:

image

刪除路徑之后編譯項目,發(fā)現(xiàn)出現(xiàn)了如下錯誤XXX.h file not found, 如下圖:
很顯然,沒有找到PushCenterSDK 下的TBSDKPushCenterEngine.h文件。

image

綜上,framework靜態(tài)庫的路徑也是必須的,如果項目中的framework靜態(tài)庫的路徑配置錯誤或者沒有配置就會報錯 xxx.h file not found 類似錯誤。下次遇到這類錯誤,便可以從framework search paths 著手思考。

同樣,framework靜態(tài)庫的搜索路徑也支持遞歸搜索,我們不必配置一個精確無誤的路徑,可以指定一個父級目錄,然后選擇 recursive。

結(jié)論:無論我們以什么方式導入.framework靜態(tài)庫(cocoapods的方式或者直接把framework靜態(tài)庫拖拽到項目中的方式),如果沒有配置framework的search路徑,同樣會報錯,但報的錯誤卻是和.a格式的靜態(tài)庫有些不同,如果我們項目中引入了framework格式靜態(tài)庫也使用了靜態(tài)庫(所謂使用就是import了framework靜態(tài)庫中的某個頭文件),但沒有配置search路徑,那么就會報 xxx.h file not found 這類錯誤

在開發(fā)的過程中難免會遇到很多的錯誤,可是當看到系統(tǒng)給出的英文時,又不知道是什么意思。所以這篇文章總結(jié)了Xcode中常見的一些英文單詞及詞組,可以幫助初學的人快速了解給出的提示。多練習,就肯定能基本掌握。
expression:表達式
assignable:賦值> variable:變量+> redefinition:重復定義> type:類型> conflicting:沖突項> invalid:無效的> conversion:轉(zhuǎn)換> specifier:說明符> indent:縮進> operands:運算對象、操作數(shù)> binary:二進制> expected:期望> logical:邏輯> const :常量> constant:常量> statements:語句> initialization:初始化> condition:條件> increment:增量> index:索引、下標> abbrev:簡寫、縮寫> alias:別名,化名> modified:修改/改進的> parameter:參數(shù)> implicit:隱含的> undo:取消> redo:重做> cancel:取消> octal:八進制的> incompatible:不匹配的> duplicate:重復> action:行為> instance:實例> modify:修改> general:普通的 in general:大體,一般來說> subclass:子類> superclass:父類> inherit:繼承> contents:內(nèi)容> primitive:原始的> modify:修改> ordered:有序的> collection:集合> dynamic:動態(tài)的> querying:查詢> deriving:派生> description:描述,描寫> collection:集合> programmatic:編程的> a set of:一系列、一組> overview :概述> related 相關(guān)的> declared in:聲明在...(文件里)> availability:可用的> framework:框架、類庫> Conforms to:服從....協(xié)議> Conforms :服從> dynamic:動態(tài)> term:條目> exact:確切的> membership:成員> entry:條目> consists of:由...組成> unique:獨特的、唯一的> determined:決定> conform to:服從,遵照> protocol:協(xié)議> distinct:不同的、獨特的> addition:添加、增加> literals:字面量> denote:表示,指示> category:類目、分類> concrete:具體的> decouples:解耦> KVC:Key-Value Coding:鍵值對編碼> > Getting Numeric Values:獲得一個數(shù)值> Identifying and Comparing Strings:識別和比較字符串> Replacing Substrings:替換子串> Finding Characters and Substrings:查找字符和子串> Dividing Strings:分割字符串> Combining Strings:拼接字符串> Getting C Strings:得到c語言的字符串> Getting Characters and Bytes:獲取字符或字節(jié)> Getting a String’s Length:得到字符串的長度> Writing to a File or URL:把內(nèi)容寫到一個文件或者URL里> Creating and Initializing a String from a File:從文件里創(chuàng)建并初始化一個字符串> Deprecated:棄用> Creating and Initializing Strings:創(chuàng)建初始化字符串> tasks:功能> Adopted Protocols:采用的/服從的協(xié)議

1: local declaration “XXX”hide instance variable
reason:一般是你函數(shù)里面定義的變量和class屬性變量重名了。很少有和系統(tǒng)變量重名的情況。 這樣的情況,修改一下變量的名字就好。

2、Undefined symbols for architecture x86_64:
可能由于某些類庫不支持64位Architecture造成,
可以在項目Build Setting=》Architecture設(shè)為非64位的選項

3、編譯warning:ld: warning: directory not foundfor option

選擇工程, 編譯的 (targets)
選擇 Build Settings 菜單
查找 Library Search Paths 和 Framework Search Paths,刪掉編譯報warning的路徑即OK

4、Undefined symbols for architecture armv7s: “OBJC_CLASS$_SZAdWebViewDelegate”, referenced from:xxxx
查找了半天,總以為缺少某個文件,后對比正常的sample發(fā)現(xiàn)問題出在armv7s,這是針對iPhone5 cpu優(yōu)化的編譯,可能你某個庫不支持,解決方法是:
Build Setting->Build Active Architecture only 的值由NO設(shè)為YES,查了一下這個選項的資料:

這個屬性設(shè)置為yes,是為了debug的時候編譯速度更快,它只編譯當前的architecture版本。
而設(shè)置為no時,會編譯所有的版本。
這個是設(shè)備對應的architecture:
armv6:iPhone 2G/3G,iPod1G/2G
armv7:iPhone 3GS/4/4s,iPod3G/4G,iPad1G/2G/3G
armv7s:iPhone5, iPod5
編譯出的版本是向下兼容的(不太對,應該說,設(shè)備是向下兼容的),比如你設(shè)置此值為yes,用iphone4編譯出來的是armv7版本的,iphone5也可以運行,但是armv6的設(shè)備就不能運行。
所以,一般debug的時候可以選擇設(shè)置為yes,release的時候要改為no,以適應不同設(shè)備。

5、Xcode “Attaching to…” 卡住,模擬器停留在啟動界面
網(wǎng)上有很多方法,什么Clean Build Folder,和各種刪除,但有一個點是優(yōu)先要考慮的,就是host沒有修改過,修復如下:

1、error: macro names must be identifiers YourProject_prefix.pch
原因: 因為你弄臟了預處理器宏,在它處于<Multiple Values>的時候修改了它
解決方法: Configiration選擇All Configirations,清空它 然后分別重新定義你的Debug,Release,Distributin預處理器宏吧
2、warning: no rule to process file '$(PROJECT_DIR)/LoadingView.h' of type sourcecode.c.h for architecture armv6
原因: Target里Compile Sources里含有頭文件 了,那里面不需要頭文件
解決方法: 從Target里Compile Sources里刪除頭文件
3、Command /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Plug-ins/iPhoneOS Build System Support.xcplugin/Contents/Resources/copypng failed with exit code 1
原因: png圖像文件拷貝失敗,看看信息上面提示Can't find哪個文件,一般都是從文件系統(tǒng)里刪除文件而沒有通過Xcode刪除造成的,Xcode的項目配置文件依然紀錄著這個文件的引用
解決辦法: 給文件系統(tǒng)里增加相應的文件,或者從Xcode的Groups & Files刪除它,或者從Target的Copy Bundle Resources里刪除它
4、Code Sign error: The identity 'iPhone Developer: Your Name' doesn't match any valid certificate/private key pair in the default keychain
原因: 簽名錯誤
解決辦法: Target -> Get Info -> Build -> Code Signing -> 修改簽名
記得左上角的Configuration類型要跟當前Build類型對應(Debug, Release, Distribution),否則改了也白改
5、could not create bundle folder for versioned model *.moda(好像是這個后綴名的這個文件)
原因:編譯一次會產(chǎn)生一個新的
解決辦法:應該把編譯產(chǎn)生出來的moda文件都刪了,然后clean下工程,重新build即可
6、error:There are no valid certificate/private key pairs in the default keychain
7、error:Cannot assign to 'self' outside of a method in the init family
原因:只能在init方法中給self賦值,Xcode判斷是否為init方法規(guī)則:方法返回id,并且名字以init +大寫字母開頭+其他 為準則。例如:- (id) initWithXXX;
出錯代碼:- (id) Myinit{
self = [super init];
……
}
解決方法:- (id) initWithMy
{
self = [super init];
}

1, iOS真機調(diào)試時,報錯:failed to get the task for process 20900
原因:
證書問題,project和targets的證書都必須是開發(fā)證書,ADHOC的證書會出現(xiàn)此問題。
解決方案:
project和targets的證書使用開發(fā)證書。
2,當 一個socket正在連接,這時又一個新的socket建立鏈接,會拋出錯誤 “ Attempting to connect while connected or accepting connections. Disconnect first.”。
原因:
第一個socket還沒返回isConnected 為YES, 就建立第二個socket連接。
解決方案:
AsyncSocket有個屬性叫isDisconnected,但接口并未開放,將- (BOOL)isDisconnected;
加入到AsyncSocket.h中。
然后在連接處:
if(![_sendSocket isDisconnected])
{
[_sendSocket disconnect];
}
3,tcp socket willDisconnectWithError:Error Domain=NSPOSIXErrorDomain Code=65
"The operation couldn’t be completed. No route to host"
No route to host (socket error ::10065)
產(chǎn)生此問題的原因:網(wǎng)絡(luò)連接不上此服務(wù)器。
解決:查看ip是否正確,查看調(diào)試設(shè)備網(wǎng)絡(luò)連接是否正常。
4,報錯:CALayer bounds contains NaN:
繪圖時,某個長寬值中包含除數(shù)為0的操作。

5,報錯:libxml/tree.h not found
解決方案:
步驟1:
工程-->PROJECT-->Build Settings
將“Header Search Paths”的值設(shè)置為<${SDK_DIR}/usr/include/libxml2>即可。
步驟2:
工程-->TARGETS-->Build Settings
將“Header Search Paths”的值設(shè)置為<${SDK_DIR}/usr/include/libxml2>即可。
我虐代碼千百遍,代碼待我如初戀!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,882評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,208評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,746評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,666評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,477評論 6 407
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 54,960評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,047評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,200評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,726評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,617評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,807評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,327評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,049評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,425評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,674評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,432評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,769評論 2 372

推薦閱讀更多精彩內(nèi)容

  • 僅以方便自己查閱記錄前言1.靜態(tài)庫和動態(tài)庫有什么異同?靜態(tài)庫:鏈接時完整地拷貝至可執(zhí)行文件中,被多次使用就有多份冗...
    190CM閱讀 4,248評論 0 4
  • 靜態(tài)庫與動態(tài)庫的區(qū)別 首先來看什么是庫,庫(Library)說白了就是一段編譯好的二進制代碼,加上頭文件就可以供別...
    吃瓜群眾呀閱讀 12,014評論 3 42
  • 對山說出的誓言早已被風打斷 佛前許愿只是安排好的上上簽 歲月步步緊逼著頭上的發(fā)際線 往日的詩句挽不回沉沒的泰坦船 ...
    青鵝閱讀 158評論 0 0
  • 十九大報告提出,必須把教育事業(yè)放在優(yōu)先位置,加快教育現(xiàn)代化,辦好人民滿意的教育。 教育信息化必將帶...
    河北南和劉志玉閱讀 894評論 0 2