如何使用C .dll

时间:2018-08-14 09:54:05

标签: c go dll

有什么方法可以在golang中使用自定义C dll? 我有用C编写的dll(goDLL.dll) 我想在里面使用它

这里是我想要得到的例子:

package main

    //#import "goDLL.dll"
    //extern void add(int * A, int * B, int * C)
    //{
    //      *C = *A + *B;
    //}
    //
    // import "C"
     import (
     "fmt"
     ) 

func main() {

    var AA *C.int = new(C.int)
    var BB *C.int = new(C.int)
    var CC *C.int = new(C.int)

    *AA = 5
    *BB = 4

    C.add(AA, BB, CC)
    fmt.Println(*CC)

}

1 个答案:

答案 0 :(得分:0)

  

有什么方法可以在golang中使用自定义C dll?

是的,您的问题的答案是

您必须导入在代码中注释的C。为了调用c函数,您需要导入“ C”。

import "C"

cgo方法允许您以这种方式调用函数:

import ("C")
...
C.yourDllFunc(...)

参考以及有关cgo

的更多信息

非常普通的示例cgo

package cgoexample
/*
#include <stdio.h>
#include <stdlib.h>

void myprint(char* s) {
    printf("%s\n", s);
}
*/
import "C"

import "unsafe"

func Example() {
    cs := C.CString("Hello from stdio\n")
    C.myprint(cs)
    C.free(unsafe.Pointer(cs))
}