1. 程式人生 > >Keil中如何使用自己生成的LIB庫

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

程式碼積累多了,大家可能都嘗試過自己寫個庫,方便呼叫,我最初的辦法是把常用的函式放到一個個.C檔案裡頭,要用的時候就把一個個.C新增到Group裡面,這種方法就很麻煩了,每次新建一個工程都要ADD半天

這裡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了

--------下面是我用庫的 一些記錄--------------------------------------------------------------------

 庫的生成


 庫的使用(在group中新增lib檔案),在主調的C檔案中include .h檔案
 KEIL中庫可以由多個.obj(與.C對應)組成,而連線是以.obj為最小單元,即某.obj中有函式被調
用時,則整個.obj中所有函式都會被連線到.hex檔案
 通常為每一個函式編一個.C檔案,而整個lib用一個.h檔案,這樣就可以使只有被呼叫的函式參與連線

相關推薦

Keil C51下生成LIB檔案以及如何使用LIB檔案

如何生成LIB庫檔案1.首先準備好生成LIB庫檔案對應的.c和.h檔案,在這裡用到的.c和.h檔案分別是:"reg303.h""rjwf303_flash.h""rjwf303_flash.c""cos_security.h""cos_security.c"2.新建一個專案,

VC加載LIB文件的三種方法

不同 方法 height 文本 lease 文件的 ase lin 需要 VC中加載LIB庫文件的三種方法 在VC中加載LIB文件的三種方法如下:   方法1:LIB文件直接加入到工程文件列表中      在VC中打開File View一頁,選中工程名,單擊鼠標右

在VS添加lib的三種方法

con lib fde .cn 解決 區分 鏈接 boa nbsp 在VS中添加lib庫的三種方法 註意: 1、每種方法也要復制相應的DLL文件到相應目錄,或者設定DLL目錄的位置,具體方法為:"Properties" -> "Configuration Prop

dll工程如何生成lib檔案

新建了一個dll工程,除了生成dll檔案外,你還想生成相應的lib檔案,怎麼搞? 解決辦法: 為工程新增一個def檔案即可。 注意: 新增def檔案後,預設情況下,生成的lib檔案的名字與工程名字相同; 如果你想使用自定義的lib檔名,修改def的檔案內容即可。

由動態檔案dll生成lib檔案

本文基於OpenBlas的編譯和安裝,來說明如何從一個dll檔案生成lib庫檔案。 參考OpenBlas的說明“Howto generate import library for MingW”,和MinGW的說明HOWTO Create an ImportLibrary

Keil如何使用自己生成LIB

程式碼積累多了,大家可能都嘗試過自己寫個庫,方便呼叫,我最初的辦法是把常用的函式放到一個個.C檔案裡頭,要用的時候就把一個個.C新增到Group裡面,這種方法就很麻煩了,每次新建一個工程都要ADD半天 這裡8279.C,delay_ms.c,watchdog.c,functi

KeilLIB的作用、生成與呼叫

               Keil中LIB庫的作用、生成與呼叫 LIB庫有什麼用,一個簡單的例子就是Silicon Labs為C8051F微控制器USB提供的USBXpress LIB庫了,如USB傳送資料、接收資料等,都是通用性很強的函式,但因為保密的原因,這個函式是怎麼寫的,使用者是不知道的,只提供

VC利用動態連結工程生成dll和lib檔案

這是在VC6中利用動態連結庫工程生成dll和lib檔案的簡單例程。 1. 建立動態連結庫工程。 2. 建立完成後,建立add.h檔案,如下。 #ifndef __ADD_H__ #define __ADD_H__ #include <string.h> __

VS編譯linux項目生成靜態並在另一個項目靜態鏈接的方法

能夠 決定 遠程 isp 讓我 comm 位置 編寫 none VS2017也推出很久了,在單位的時候寫linux的服務端程序只能用vim,這讓用慣了IDE的我很難受。 加上想自己擼一套linux上的輪子,決定用VS開工遠程編寫調試linux程序。 在windows下編

在VS新增lib的三種方法

在VS中新增lib庫的三種方法 注意: 1、每種方法也要複製相應的DLL檔案到相應目錄,或者設定DLL目錄的位置,具體方法為:"Properties" -> "Configuration Properties" -> "Deb

關於C語言中用Keil軟體製作Lib檔案的幾點經驗(.lib檔案可以讓源函式封裝保密,仍可呼叫)

1.關於制止LIB庫檔案的幾點經驗 1. 一個工程如何生成lib檔案:     2. 一個生成lib檔案的工程可以呼叫這個工程中不存在的函式,只需要在.h檔案中宣告這些不存在函式的原型,然後在呼叫這個lib檔案的工程中實現這些函式即可。 3. 由上面一點

keil怎麼新增自己的標頭檔案,加入工程,儲存路徑。#include還用嗎

keil中怎麼新增自己的標頭檔案,例如:新增#include<led.h>,要把它寫在哪裡,儲存在哪裡,才能編譯後,顯示 #include<reg51.h>#include<led.h>我這樣寫了,沒反應。是不是要新建檔案led.h,再儲存在那個檔案裡面才可以

Laravel使用自己的類三種方式

雖然Composer使得我們可以重用很多現有的類庫(例如packagist.org中的),但是我們仍然可能用到一些不相容composer的包或者類庫。另外在某一專案中,我們也可能會建立某一類庫,而且可能並沒有製作成為composer package 的打算。這個時候我們可以通過以下方式來使用自己的特有類庫。

在yii2應用,使用imagine生成分享圖實戰。

這個需求現在特別常見,比如生成小程式分享圖、生成朋友圈分享圖等等,一般是文字 + 二維碼 + 背景模板。今天我們使用imagine來完成這件事情,並作用於網站的面試題模組。 我規劃的分享圖佈局如下 在這裡面題目標題、日期和二維碼是需要替換的,其他部分均可以做到

Android6.0系統的framework層加入自己的共享服務,在系統預編譯之後,系統啟動提示找不到類的問題

共享庫服務我們取名為myserver 系統預編譯(預優化):目的是加快系統的啟動時間,如下設定: device\atc\evb3561sv_w_no2\BoardConfig.mk ### add by zhaojr for odex # Enable dex-preop

Pepper/Nao中級教程:第四章 如何在Choregraphe匯入外部Python lib

4.1 目標 如果下載了一個Python lib庫,我如何讓Choregraphe呼叫這個lib庫呢? 通過本教程,想必你就可以做到了。 4.2 原理 Choregraphe做的App,是由一堆指令盒和

10. 利用vs2017lib.exe把def檔案生成lib檔案

1.首先找到你的vs檔案所在資料夾 2.然後找到找到lib.exe所在的位置 我的位置是在 D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.13.26

Java(1) Java如何使封裝自己的類,建立並使用自己的類

Java中如何使封裝自己的類,建立並使用自己的類庫?            ——感謝您的閱讀,本篇文章轉載自以下連結,支援原創,人人有責。 http://blog.csdn.net/luoweifu/ar

linux建立自己的靜態 動態並使用

庫依賴: gcc connect.c –o connect –I /usr/include/mysql –L /usr/lib/mysql -lmysqlclient//-I是找到自己寫的標頭檔案所在的位置 -L是找到自己所寫的動態庫所在的位置,並且寫上函式名,靜態庫不用寫-L,只寫函式名//-I 是i 的大

vc++ 如何自己寫c函式lib

步驟1、      開啟VC++ 6.0,新建一個空Win32 Static Library(靜態函式)       新建一個11.cpp原始檔和22.h標頭檔案    執行,這時候在這個專案下就會生成0654.lib 和22.h檔案 把0654.lib檔案複製到