利用gcc編譯出dll檔案

2021-04-13 07:19:19 字數 1075 閱讀 9857

下面用乙個簡單的例子說明這個過程,共有三個檔案:hello.c、dll.h和dll.c。

hello.c 檔案內容如下

#include

#include "dll.h"

int main()

其中,hello()函式是動態連線庫提供的函式。

dll.h 檔案內容如下

#ifdef build_dll /* dll export */

#define export __declspec(dllexport)

#else /* exe import */

#define export __declspec(dllimport)

#endif

export void hello(void);

dll.c 檔案內容如下

#include "dll.h"

export void hello(void)

三個檔案的內容都很簡單,無須解釋。

編譯連線程式

1、編譯hello.c

gcc -c hello.c

2、編譯dll.c

gcc -c -dbuild_dll dll.c

注意要使用要使用-dbuild_dll來設定巨集build_dll

3、建立dll

gcc -shared -o message.dll dll.o -wl,--out-implib,libmessage.a

這一步要詳細說明一下

-shared引數用來建立共享庫,在windows中為dll

-wl 等待下一條資訊進行連線

--out-implib是給連線程式ld使用的,用於建立要連線dll需要的import library

4、建立可執行檔案

gcc -o hello.exe hello.o -l./ -lmessage

-l 指定連線庫路徑

-lmessage (or -l message) 指定dll的import library

好了,編譯連線完成,執行程式

c:/>hello

hello!

利用GCC編譯obj c

bash 3.2 cat test first.m import int main int argc,char argv makefile target name test first auto src file join target name m auto obj file join targe...

Gcc編譯出錯處理 openssl 依賴問題

出錯資訊 error dereferencing pointer to incomplete type rsa 原因 由於預設使用了openssl 1.1.x 版本,導致的api不一致引起 解決 1,直接安裝openssl1.0版本,debian 系 apt get install libssl1....

標頭檔案 gcc編譯

1 標頭檔案的包含方式 include 預設是從 usr include 目錄下搜尋檔案 include stdio.h include stdio.h 先在當前目錄下搜尋檔案,如果沒有,再去 usr include 下找 2 c語言的編譯步驟 預處理 預編譯 處理 開頭的內容,進行替換 執行巨集替...