本文目錄一覽:
如何在golang 中調用c的靜態庫或者動態庫
1. 無論調用動態庫還是靜態庫都只需要include庫的頭文件就可以了
2. 要在調用該靜態庫的地方添加庫引用,並設置路徑。
結論:其實靜態庫調用動態庫或者靜態庫,只是在用到庫方法的地方把該方法添加到LIB當中,真正使用的地方才會把這些庫LINK起來生成可執行文件。
golang中調用c的正確姿勢
工程結構如上圖所示,我們需要實現的目標是在go文件中調用c文件
foo.c如下:
foo.go如下
foo.h如下:
編譯過程如下:
1、先將c文件編譯為.o文件,然後生成動態鏈接庫.dylib文件
(1) clang -c foo.c
(2 clang -shared foo.o -o libfoo.dylib
2、在上述的動態鏈接庫生成之後,在foo.go中添加動態鏈接命令:#cgo LDFLAGS: -L./ -lfoo
需要注意的是
中間不能有空格
golang調用DLL中的函數
在golang中加載dll並調用函數流程如下:
1.加載dll動態庫到內存 syscall.LoadLibrary
2.獲取函數地址 syscall.GetProcAddress
3.執行系統調用,傳入參數 syscall.Syscall6
一個系統消息框函數的調用示例:
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/182898.html