Как передать двумерный целочисленный массив в функцию CGO из GO - PullRequest
0 голосов
/ 11 июля 2019

Я должен вызвать функцию C из Go. Функция C принимает двумерный целочисленный массив и некоторые другие параметры. Я боролся с передачей целочисленного массива Go 2d через функцию C.

Я создал массив go с типом C.int и перешел в функцию c. это показывает:

cannot use G (type [10][10]_Ctype_int) as type *[10]_Ctype_int in argument to _Cfunc_dijkstra

Здесь функция dijkstra реализована в файле merge_sort.c

package main


// #include "merge_sort.c"
import "C"

func main(){
    var G = [10][10] C.int {
        {0, 3, 4, 0, 0, 0, 0, 0, 0, 0}, 
        {3, 0, 0, 4, 5, 0, 0, 0, 0, 0},
        {4, 0, 0, 4, 0, 6, 0, 0, 0, 0}, 
        {0, 4, 4, 0, 5, 3, 7, 0, 0, 0}, 
        {0, 5, 0, 5, 0, 0, 4, 0, 6, 0},
        {0, 0, 6, 3, 0, 0, 3, 3, 0, 0}, 
        {0, 0, 0, 7, 4, 3, 0, 2, 1, 3}, 
        {0, 0, 0, 0, 0, 3, 2, 0, 0, 3}, 
        {0, 0, 0, 0, 6, 0, 1, 0, 0, 3}, 
        {0, 0, 0, 0, 0, 0, 3, 3, 3, 0},
    }

    var n C.int= 10
    var u C.int= 0

    C.dijkstra(G, n ,u)
}

Функция c выглядит следующим образом

void dijkstra(int G[10][10],int n,int startnode);
...