猿问

init() 函数不在共享库中运行?

我正在构建我的包,-buildmode=c-shared发现导入包中的 init() 函数似乎没有运行。这是预期的行为,错误还是我只是愚蠢?我在 linux/amd64 上使用 go1.13.7。有问题的函数如下所示:

func init() {
    jsonrpc.HandleFunc("create-context", ContextHandler)}

jsonrpc 是我编写的一个包,该函数将一个条目添加到那里的未导出的全局映射中。


ITMISS
浏览 327回答 1
1回答

杨魅力

我试过:package mainimport "C"import "fmt"func init() {&nbsp; &nbsp; &nbsp; &nbsp; fmt.Println("in init")}//export Yofunc Yo() {&nbsp; &nbsp; &nbsp; &nbsp; fmt.Println("that's what's up")}func main() {&nbsp; &nbsp; &nbsp; &nbsp; fmt.Println("vim-go")}go build -buildmode=c-shared lib.go我得到了一个lib.h#include <stdio.h>#include "lol.h"int main() {&nbsp; &nbsp; Yo();}我编译:gcc -o client main.c ./lib.so我得到了一个:in initthat's what's up所以在我看来它有效。
随时随地看视频慕课网APP

相关分类

Go
我要回答