- Buding DLL with MinGW
- gcc -c mydll.c
- gcc -shared -o mydll.dll mydll.o
- gcc -o test test.c -L./ -lmydll
- gcc -c -D__MYDLL_H__ mydll.c
- gcc -shared -o mydll.dll mydll.o
- gcc -o test test.c -L./ -lmydll
- gcc -c -D__FIBDLL_H__ fib.c
- gcc -shared -o fib.dll fib.o
- gcc -o test test.c
在windows底下要建立dll檔時通常會使用Visual C++,這裡提供一個使用MinGW的方式來產生dll。
==================================
/* mydll.c */
使用以下兩個指令將mydll.c編譯成dll檔
==================================
/* test.c */
把編譯好的dll檔連結到我們要測試的程式(test.c)
執行範例畫面如下:
上面是一個比較簡便的方式,不只是MinGW可用,GCC也可以透過上述的程式馬來產生library,以下的方法適用於Win32環境下的dll,有需求的人可以不訪學起來。
==================================
/* mydll.h */
透過__declspec來決定我們有哪些functions或variables要被列為可供動態連結調用
/* mydll.c*/
程式的功能很簡單,要注意的是printMsg回傳型態前面並沒有加上EXPORT,如此一來,你就無法透過使用mydll.dll來調用printMsg,只有mydll.dll本身的函式可以使用printMsg函式。
我們可以透過下面兩個指令來編譯這個dll。
產生完dll之後我們還要測試是否能夠正常運作。
=========================================
/* test.c */
如果將成是碼第5行的註解拿掉將會編譯錯誤,原因如同上面所提的。
範例輸出畫面如下:
=================================
上面的都還只是靜態的連結,動態的連結方式如下:
/* fib.h */
/* fib.c */
只是變成dll由test.c裡面呼叫使用。
No comments:
Post a Comment