C 關於庫專案的生成和使用

2021-09-06 14:46:33 字數 1149 閱讀 3499

如果我們的程式想要使用(匯入/載入)某個dll中的函式,那麼該函式必須在dll中是已經匯出的。

首先需要配置需要的lib檔案,之後再採用extern或_declspec(dllimport)宣告。配置lib檔案有兩種,一種是在專案屬性中配置,另一種是在程式中加入下述**(比如說使用的是a.lib檔案),這兩種方式效果是一樣的。

#include "a.h"

#pragma comment(lib,"a.lib")

經常是在.h檔案中宣告函式/類/資料的匯出和匯入,那麼問題來了,庫檔案的.h檔案既被庫專案載入(這個時候應該是dllexport)又被將來使用庫檔案的專案載入(這個時候應該是dllimport),那麼該怎麼辦呢,應當這麼辦:

在庫專案的開頭定義巨集dllprovider,然後在需要的.h檔案中加入這樣的**,以後當使用dllexport或dllimport的時候,都使用dll_export_import就行了。

#ifdef dllprovider

#define dll_export_import __declspec(dllexport) //在庫專案中使用

#else

#define dll_export_import __declspec(dllimport)//在使用dll的專案中使用

#endif

我們經常在程式(尤其是一些年代比較久,比如說早期的庫檔案裡)裡見到這樣的**

#ifdef __cplusplus 

extern "c"

#endif

這個巨集#ifdef __cplusplus意思是說,如果該檔案是cpp檔案,extern "c"生效。當cpp檔案中出現這些**,意味著花括號裡邊的**是以c語言的編譯規則生成組合語言。

雖然c++是在c語言的基礎上發展起來的,但是有些c**和c++的編譯規則存在一定差異。為了相容這部分**,c++創始人制定了上述的解決方法,在c++檔案(也就是cpp檔案)允許c語言**直接存在,只需要在頭上宣告一下這部分**需要按c語言的方法進行編譯,也就是extern "c"的存在

關於使用Git參與他人專案的方法

首先,安裝好本地的git,同時生成對應的ssh金鑰,鏈結好自己的github或者gitlab設定 1 找到自己想參與的專案,fork對應的專案,這樣你的倉庫中會出現對於的專案 4 確認是否新增成功 git remote v 5 當原專案改動時,獲取原專案的更新 git fetch 別名 6 當你修改...

git 使用關於本地分支和遠端倉庫專案的合併

title git 常用命令使用 categories git comments true keywords git abbrlink 21930 外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳 img k1uaahel 1596194030441 使用關於本地分支和遠端倉庫專案的合併 ...

動態庫生成和使用

先看 pop.c extern int stack 512 extern int top int pop push.c extern int stack 512 extern int top void push int v main.c include int stack 512 int top 0...