c - 如何使用 C.dll

标签 c go dll

<分区>

有没有办法在golang中使用自定义的C dll? 我的 dll 是用 C 语言编写的 (goDLL.dll) 我想在 go 中使用它

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

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)

}

最佳答案

Is there any way to use custom C dll in golang?

你的问题的答案,是的

您必须导入您在代码中注释的 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))
}

关于c - 如何使用 C.dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51838685/

相关文章:

c# - 将程序集与部分类链接

c# - Microsoft.mshtml.dll 重新分发问题

c++ - C 逗号运算符的使用

python - 如何在 Python 中包装返回位掩码的函数

Go 的 session 中间件?

go - 无法使用 GOLANG 和 POLYMER 在服务器上保存上传的文件 http : no such file

c# - 从 C++ COM DLL 回调到 C# 应用程序

c - 在 while 循环中转义 scanf

c - 在 C 中替换宏中的宏

go - delphi/pascal <> golang (异或加密)