windows下go调自己写的c动态库(dll)

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

首先编写c文件testdll.c

#include 
int myadd(int a, int b)
{
    return a + b;
}

编译成动态库

gcc -shared testdll.c -o add.dll  得到 add.dll文件

下面就是引用:

package main

import (

    "fmt"

    "syscall"

)

func main() {

    addfile, err := syscall.LoadLibrary("../add.dll") //动态库的路径

    if err != nil {

        fmt.Printf("cgo:err :%v\n", err)

    }

    myaddcall, _ := syscall.GetProcAddress(addfile, "myadd")

    var nargs uintptr = 3

    ret, _, callErr := syscall.Syscall(uintptr(myaddcall), nargs, 5, 3, 0)

    if callErr != 0 {

        fmt.Printf("Call myaddcall: %v\n", callErr)

    }

    fmt.Printf("myadd:%v\n", ret)

}

然后直接go run运行即可


非常感谢知乎和周贤,是他们帮我解决的这个问题,下面是问题链接,有兴趣的可以看下

https://www.zhihu.com/question/39015381

转载于:https://my.oschina.net/ifraincoat/blog/593612

你可能感兴趣的:(windows下go调自己写的c动态库(dll))