Я должен вызвать функцию 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);