我正在尝试从go语言代码中运行一个C调用。下面是我正在运行的程序:
package main
// #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;现在,下面是我在尝试运行该程序时遇到的错误:
pensu@ubuntu:~$ go run test.go
# command-line-arguments
could not determine kind of name for C.CMD_SET_ROUTE我正在使用gccgo-5和go版本1.4.2。你能帮我弄清楚到底是什么问题吗?蒂娅。
发布于 2015-07-21 14:01:26
四件事:
proxy.h时,您应该使用双引号,因为它与.go文件驻留在同一个目录中。#endif末尾缺少了一个proxy.h。CMD_DEFINE之前,需要定义proxy.h。否则,Go无法访问静态变量。以下是修正后的代码:
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;
#endifhttps://stackoverflow.com/questions/31540974
复制相似问题