1
0
mirror of https://github.com/chai2010/advanced-go-programming-book.git synced 2025-05-24 12:32:21 +00:00

ch2-2-fix code

This commit is contained in:
sfw 2018-08-15 19:18:31 +08:00
parent e27fc30842
commit 9c5196da23

View File

@ -1,6 +1,6 @@
# 2.2 CGO基础 # 2.2 CGO基础
要使用CGO特性需要安装CC++构建工具链在macOS和Linux下是要安装GCC在windows下是需要安装MinGW工具。同时需要保证环境变量`CGO_ENABLED`被设置为1这表示CGO是被启用的状态。在本地构建时`CGO_ENABLED`默认是启用的当交叉构建时CGO默认是禁止的。比如要交叉构建ARM环境运行的Go程序需要手工设置好C/C++交叉构建的工具链,同时开启`CGO_ENABLED`环境变量。然后通过`import "C"`语句启用CGO特性。 要使用CGO特性需要安装C/C++构建工具链在macOS和Linux下是要安装GCC在windows下是需要安装MinGW工具。同时需要保证环境变量`CGO_ENABLED`被设置为1这表示CGO是被启用的状态。在本地构建时`CGO_ENABLED`默认是启用的当交叉构建时CGO默认是禁止的。比如要交叉构建ARM环境运行的Go程序需要手工设置好C/C++交叉构建的工具链,同时开启`CGO_ENABLED`环境变量。然后通过`import "C"`语句启用CGO特性。
## 2.2.1 `import "C"`语句 ## 2.2.1 `import "C"`语句
@ -37,6 +37,7 @@ cgo将当前包引用的C语言符号都放到了虚拟的C包中同时当前
```go ```go
package cgo_helper package cgo_helper
//#include <stdio.h>
import "C" import "C"
type CChar C.char type CChar C.char
@ -46,7 +47,7 @@ func (p *CChar) GoString() string {
} }
func PrintCString(cs *C.char) { func PrintCString(cs *C.char) {
print(((*CChar)(cs.GoString())) C.puts(cs)
} }
``` ```
@ -55,7 +56,7 @@ func PrintCString(cs *C.char) {
```go ```go
package main package main
// extern char* cs = "hello" //char* cs = "hello";
import "C" import "C"
import "./cgo_helper" import "./cgo_helper"