无法从go运行C调用
我正在尝试从go语言代码运行C调用。以下是我正在运行的程序:无法从go运行C调用,go,cgo,gccgo,Go,Cgo,Gccgo,我正在尝试从go语言代码运行C调用。以下是我正在运行的程序: package main // #include<proxy.h> import "C" import "fmt" func main(){ fmt.Println(C.CMD_SET_ROUTE) } 我正在使用gccgo-5和go版本1.4.2。你能帮我弄清楚到底是什么问题吗?TIA.四件事: 当包含proxy.h时,应该使用双引号,因为它与.go文件位于同一目录中 “C”注释和“C”导入之前不能有空
package main
// #include<proxy.h>
import "C"
import "fmt"
func main(){
fmt.Println(C.CMD_SET_ROUTE)
}
我正在使用gccgo-5和go版本1.4.2。你能帮我弄清楚到底是什么问题吗?TIA.四件事:
- 当包含
时,应该使用双引号,因为它与proxy.h
文件位于同一目录中.go
- “C”注释和“C”导入之前不能有空行
- 您在
末尾缺少一个proxy.h
#endif
- 在包含
之前,需要定义proxy.h
。否则,Go无法访问静态变量CMD\u define
package main
// #define CMD_DEFINE
// #include "proxy.h"
import "C"
import "fmt"
func main(){
fmt.Println(C.CMD_SET_ROUTE)
}
\ifndef PROXY\u H
#定义代理服务器
#包括
#ifdef CMD_DEFINE
#定义cmdexport
#否则
#定义cmdexport static
#恩迪夫
cmdexport const int CMD_SET_ROUTE=1;
cmdexport const int CMD_DEL_ROUTE=2;
CMDEPORT const int CMD_STOP=3;
#恩迪夫
我会避免尝试使用gccgo和go1.4.2。坚持使用默认的工具链,直到您对gccgo有特定的需求,以避免增加混乱。您的代码中有很多语法错误。在使用cgo之前,最好先浏览一下博客文章。
pensu@ubuntu:~$ go run test.go
# command-line-arguments
could not determine kind of name for C.CMD_SET_ROUTE
package main
// #define CMD_DEFINE
// #include "proxy.h"
import "C"
import "fmt"
func main(){
fmt.Println(C.CMD_SET_ROUTE)
}
#ifndef PROXY_H
#define PROXY_H
#include <netinet/in.h>
#ifdef CMD_DEFINE
# define cmdexport
#else
# define cmdexport static
#endif
cmdexport const int CMD_SET_ROUTE = 1;
cmdexport const int CMD_DEL_ROUTE = 2;
cmdexport const int CMD_STOP = 3;
#endif