當前位置:首頁 » 文件管理 » keil可以添加lib文件嗎
擴展閱讀
怎樣忘了你想忘掉的內容 2025-05-20 15:10:01
冰過的酸奶可以加熱喝嗎 2025-05-20 14:57:03

keil可以添加lib文件嗎

發布時間: 2022-12-15 20:46:34

① keil 中如何調用lib

1、將庫文件(.lib)添加到項目中
2、將庫文件對應的H文件加到需要使用的C文件中
3、如同調用普通的C文件中函數一樣,調用庫文件中的函數。

② 在Keil c51如何把相應的庫文件添加到工程中

先在工程中添加庫文件(.lib文件),即在左邊的樹型圖上,右鍵-》add
files
to
.....,類似添加c文件。然後將庫文件對應的頭文件加到main.c文件中,這樣就可以用了。

③ 怎麼用Keil將C程序封裝成lib庫

在團隊工作中,經常會有模塊維護和代碼封裝的問題。把需要封裝的代碼打成一個lib無疑是一種很好的方式。
1.創建lib
創建一個lib很容易,只需要創建一個target,然後把需要封裝的代碼全部加進來,然後再Options of Target中選擇Create Library,然後編譯,因為是lib所以不需要鏈接,編譯過了,你的lib就創建了。當然了,為了別人可以輕松的使用,請提供頭文件支持哦。
2.使用lib
使用lib就更容易了,把lib和頭文件加入你的工程,直接調用就是了。lib庫會和你工程中其它編譯後的obj一起鏈接,形成最後的目標文件。
3.注意事項
首先,Startup和中斷處理程序不要封入LIB,這些程序會在鏈接的時候產生問題。具體的原因么,有點復雜,應該是中斷程序的link機制有所不同的關系吧。
其次,Lib的文件要分的細一點,沒有調用關系的兩個函數不要放到同一個C文件中,因為LIB51在鏈接的時候是按模塊來鏈接的,一個模塊就對應一個C文件,假如鏈接器因為要使用你一個函數fA而引入了A模塊,那麼A模塊中的另外的函數也會被引入,而另外的函數你又沒有使用的話,那麼就會引發Keil經典的UNCALLED FUNC的warning。這個warning在Keil的文檔中說的好清楚了,我粘過來吧:
It is common practice ring the development process to write but not call
additional functions. While the compiler permits this without error, the
Linker/Locator does not treat this code casually because of the support for data
overlaying, and emits a warning message.
Interrupt functions are never called, they are invoked by the hardware. An
uncalled routine is treated as a potential interrupt routine by the linker. This
means that the function is assigned non-overlayable data space for its local
variables. This quickly exhausts all available data memory (depending upon the
memory model used).
If you unexpectedly run out of memory, be sure to check for linker warnings
relating to uncalled or unused routines. You can use the linker』s IXREF
directive to include a cross reference list in the linker map (.M51) file.
大意就是說,Keil的內存應用模式是指定地址的,也就是要根據調用關系來決定哪塊地址可以被復用。對於這種沒人調用的函數,Keil會認為是中斷處理程序,並不能決定調用關系,所以此類uncalled函數的空間不能和其他的程序共享,也就是說,這函數用多少RAM,你就少多少RAM。那uncall多了會怎麼樣?----廢話,當然是內存溢出了。
所以,lib的功能可以做的大而全,但是裡面的模塊一定要分的要多細,有多細,只有這樣,你才能像在windows上用CRT一樣舒服的使用LIB。

個人總結
1. 生成lib 的工程可以沒有main函數,可以只有一個.c文件,一個.c文件中可以只有一個函數
2. 需要在lib工程中建立一個.h文件, 必須用extern聲明各全局變數和函數.

3. 調用lib文件的工程中必須包括lib中的.h文件, 也就是lib工程和調用工程都包含同一個.h文件(好像有點廢話)
4.Lib的文件要分的細一點,沒有調用關系的兩個函數不要放到同一個C文件中. 沒有調用關系的最好是一個函數單獨放在一個.c文件中.這是為了避免在keil中應用程序調用lib庫里出現告警. 因為LIB51在鏈接的時候是按模塊來鏈接的,一個模塊就對應一個C文件,假如鏈接器因為要使用你一個函數fA而引入了A模塊,那麼A模塊中的另外的函數也會被引入,而另外的函數你又沒有使用的話,那麼就會引發Keil經典的UNCALLED FUNC的warning。
通常為每一個函數編一個.C文件,而整個lib用一個.h文件,這樣就可以使只有被調用的函數參與連接
5.調用lib庫時需要在工程中將.lib文件加進來. 在Group中右鍵,然後Add ,注意文件類型中選擇*.lib.

④ keil中模擬能看到lib程序嗎

keil中模擬不能看到lib程序。lib本來就沒有提供源程序,都是封好的庫函數。就是避免被你看源碼的……如果覺得函數有用的話,直接調用庫就行了,所以不能。

⑤ 怎樣在keil中導入庫文件

利用keil軟體的庫安裝器可以實現在keil中導入庫文件,具體操作請參照以下步驟。

1、在電腦上打開keil軟體,進入軟體後,單擊軟體界面中圖中箭頭標記的圖標,單擊一下後會彈出一個對話框。

⑥ Keil中如何使用自己生成的LIB庫

這簡單,把生成的LIB庫文件加到工程里,在主程序中先聲明庫中的子函數,一定要與LIB庫中定義子函數名一致,主程序就可以調用庫中的子函數了。

⑦ 如何在keil下製作LIB封裝庫文件

Project
->
Options
for
Target
->
Output
勾選「Create
Library」就行了。可以參看文章「Keil(MDK-ARM)系列教程(三)_工程目標選項配置(Ⅰ)」:
http://blog.csdn.net/ybhuangfugui/article/details/51655502
Keil系列教程:
http://blog.csdn.net/column/details/13472.html

⑧ 如何在KEIL下製作出自己的庫文件

就是這樣的,如下截圖所示:
而若果我們只添加相應的.c文件,而把.h文件,沒有添加到工程文件里,那麼就會是這樣的!
其實這兩種形式沒有什麼本質區別,大家理解之後就好了!!!
現在我們清楚了,其實lib文件里就是放的我們平時中用的.c和.h文件,使用lib文件的目的無非就是兩種(1)是程序簡潔(2)想讓別人使用自己的代碼,但是不想讓別人知道代碼的具體內容是什麼!還有一種(3)就是閑著沒事,也想高大上一把!
現在開始說正題了,如何在keil
中創建lib

⑨ [轉]Keil中如何使用自己生成的LIB庫

這里8279.C,delay_ms.c,watchdog.c,function.c都是我以前寫過現在拿來重用的代碼。
這樣做還有一個問題,如果某個函數未調用,編譯器就會給一個警告,UNCALLED SEGMENT,IGNORED FOR OVERLAY PROCESS,"未調用的段,被忽略",雖然無啥大礙,但看著也挺不爽的。
於是自己生成LIB文件,.lib是生成了,但就是沒能用,始終有警告
*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL未解析的外部標號
*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL引用外部為解析的段
因為編譯器沒有找到那個函數的代碼,也就未解析了,網路了一下,前幾個結果竟然都沒給出一個有效的解決辦法
其實問題很簡單,你在Group上右鍵ADD時注意一下對話框中允許添加的文件擴展名,除了c,asm之外,還有lib,把你的lib文件加進去,ok了。--------下面是我用庫的 一些記錄-------------------------------------------------