golang类型转换循环 - apache模块

时间:2015-01-09 14:51:15

标签: apache go apache-modules cgo

我正在尝试构建一个到Apache模块系统的Go接口。即我希望能够从我的Apache模块调用Go函数。这是我的Go文件:

package main

// #cgo CFLAGS: -I/usr/include/apache2 -I/usr/include/apr-1.0
// #include <httpd.h>
import "C"

//export handler
func handler(r *C.request_rec) int {
    ap_set_content_type(r, "text/html");
    ap_rprintf(r, "Hello, world from Go")
    return OK;
}

当我构建它(go build mod_frugal.go)时,我收到此错误:

# command-line-arguments
./mod_frugal.go:8:17: type conversion loop at volatile *struct apr_bucket

第8行是函数&#34; handler&#34;开始。有什么建议吗?

或者,当我使用cgo(go tool cgo mod_frugal.go)构建时,它根本看不到我的include指令:

/home/vagrant/mod_frugal/src/mod_frugal.go:4:20: fatal error: httpd.h: No such file or directory
// #include <httpd.h>
                ^
compilation terminated.

当我添加&#34; C。&#34;两个apache调用的前缀:

package main

// #cgo CFLAGS: -I/usr/include/apache2 -I/usr/include/apr-1.0
// #include "mod_frugal.h"
import "C"

//export handler
func handler(r *C.struct_request_rec) int {
    C.ap_set_content_type(r, "text/html")
    C.ap_rprintf(r, "<h1>Hello, world from Go!</h1>")
    return OK
}

我收到一个新错误:

# _/home/vagrant/mod_frugal/src
37: error: 'ap_set_content_type' undeclared (first use in this function)
37: error: 'ap_rprintf' undeclared (first use in this function)

也许我需要链接libhttpd?我无法在互联网上找到任何关于链接apache2的内容,包括类似libhttpd的内容。

编辑:

随意关注对话here

0 个答案:

没有答案