1package mian 2 3import "C" 4 5//export Min 6func Min(a,b) int32{ 7 if a>b{ 8 return int32(b) 9 } 10 return int32(a) 11}
编译命令
go build -ldflags "-s -w" -buildmode=c-shared -o net.dll main.go
1package main 2 3/* 4#include <stdio.h> 5#include <stdlib.h> 6*/ 7import "C" 8 9import ( 10 "unsafe" 11) 12 13func main() { 14 for i := 1; i < 999; i++ { 15 cstr := C.CString("Hello, world") 16 17 C.free(unsafe.Pointer(cstr))//释放内存 必须引入stdlib.h 标准库 18 } 19 20} 21 22//返回文本//export Tostring 23func Tostring(a *C.char) *int32{ 24 text := C.GoString(a) 25 cstr := C.CString(text) 26 //C.free(unsafe.Pointer(cstr)) 27 return (*int32)(unsafe.Pointer(cstr)) 28} 29 30//export Getslice//传输字节集 31func Getslice(CC **C.char,)int{ 32 aa:="fdfdfsfdsfdsfdsfdsfsd" 33 zz:=[]byte(aa) 34 *CC=(*C.char)(unsafe.Pointer(C.CBytes(zz))) 35 return len(zz) 36}