在WIN下,当MinGW安装,环境变量都设置好之后,使用IDE工具(如Intellij Idea)编译运行含cgo的go代码时,可能会提示如下问题:

C:\Users\xxxxx\AppData\Local\Temp\go-build207333758\b001\_x002.o: In function `_cgo_92313558f347_Cfunc_c_pirnt_string':
/tmp/go-build/cgo-gcc-prolog:49: undefined reference to `c_pirnt_string'
collect2.exe: error: ld returned 1 exit status

该问题是IDE工具编译时的选项是go build xxx.go,编译运行的是某个go文件,实际上在编译运行含cgo的代码时,应该选择go build,文件夹编译,这是在某些分享的文章中也会提到的。以Intellij Idea为例,具体修改方法是在RUN/DEBUG Configuration里修改build kind

通过试验,在cmd窗口里,到工程的目录下执行go build是可以正确生成可执行文件,并可正常运行。