2

Is there any way to use custom C dll in golang? I have my dll written in C (goDLL.dll) and i want to use it inside go

Here is little example what i want to get:

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)

}
Jonathan Hall
  • 75,165
  • 16
  • 143
  • 189
Frnk Wdl
  • 146
  • 2
  • 11

1 Answers1

0

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

The answer to your question, yes

You have to import the C that you commented in your code. In order to call the c function, you need to import "C".

import "C"

The cgo way allows you to call the function this way:

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

Reference and more information about cgo

Very generic example 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))
}
danglingpointer
  • 4,708
  • 3
  • 24
  • 42