package main
import "C"
func Sum(a int, b int) int {
return a + b;
}
func main() {}
编译
go build -buildmode=c-shared -o exportgo.dll 1.go
调用
C++
#include <iostream>
#include <Windows.h>
int main()
{
HMODULE h = NULL;
h = LoadLibrary("exportgo.dll");
if (h == NULL)
{
printf("nul\n");
return -1;
}
typedef int(*AddFunc)(int, int);
AddFunc Sum;
Sum = (AddFunc)GetProcAddress(h, "Sum");
int sum = Sum(100, 200);
printf("jieguo: %d\n", sum);
return 0;
}
Node.js
var ffi = require('ffi-napi')
var path = require('path')
var dllPath = path.resolve("./exportgo.dll");
var dllfuns = ffi.Library(dllPath, {
'Sum': [ 'int', [ 'int', 'int' ] ],
});
var s = dllfuns.Sum(1,2);
console.log(s)
Python
from ctypes import cdll, c_int
lib = cdll.LoadLibrary('./exportgo.dll')
lib.Sum.restype = c_int
rest = lib.Sum(1,2)
print(rest)