筆者很常使用golang 撰寫CLI tool, 那除了編譯成執行檔後被其他語言呼叫之外, 還可以什麼形式呢?
除此之外, 在開發的過程中, 很常會遇到需要在A語言中使用B語言的功能或是可能被迫要求把B語言重構成A語言. 那是否有可以直接使用的方法呢?
作法:
Q: 如果在編譯過程中遇到以下錯誤訊息, 該如何解?
error: implicit declaration of function '_beginthread' [-Werror=implicit-function-declaration]
A: 請更新您的GCC 版本, windows 的部份建議是直接安裝TDM-GCC後再重新做編譯即可
multiplier.go
package main
import "C"
import "fmt"
//export HelloWorld
func HelloWorld() {
fmt.Println("HelloWorld from DLL")
}
//export Sum
func Sum(a int, b int) int {
return a + b;
}
//export Multiplier
func Multiplier(a int, b int) int {
return a * b;
}
func main() {}
go build -buildmode c-shared -o multiplier.dll multiplier.go
5.編譯成功後, 在資料夾內會看到已經產生出兩個檔案
Q: 為什麼有時候在編譯完後不會自動產生C++ header file?
A: 原因如下:
(1) 使用ipython 驗證
詳細程式碼及檔案請參考以下連結:
Demo source code - Github