неопределенная ссылка на функцию c при вызове из кода go - PullRequest
0 голосов
/ 23 апреля 2020

Я пытаюсь вызвать простую c функцию из go с помощью cgo

Файлы имеют следующий вид:

goFile. go:

package main

//#include "cFile.h"
import "C"

func main() {
    C.printInC()
}

cFile.h:

void printInC();

cFile. c:

#include "cFile.h"
#include <stdio.h>

void printInC(){
    printf("Test");
}

Выполнение go build goFile.go выдает следующее исключение:

C:/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: $WORK\b001\_x002.o: in function `_cgo_f9774dcf54b4_Cfunc_printInC':
/tmp/go-build/cgo-gcc-prolog:49: undefined reference to `printInC'
collect2.exe: error: ld returned 1 exit status

Я не совсем уверен, почему это не работает, я посмотрел несколько учебных пособий для cgo, которые реализовать вызов c функций точно так же, без проблем.

1 Ответ

0 голосов
/ 23 апреля 2020

Я нашел проблему.

При запуске go build goFile.go инструмент go, по-видимому, только собирает goFile. go, когда я запускаю go сборка по всему каталогу, все работает нормально ..

...