为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
ITMISS 2022-05-18 13:37:58
我正在构建我的包,-buildmode=c-shared发现导入包中的 init() 函数似乎没有运行。这是预期的行为,错误还是我只是愚蠢?我在 linux/amd64 上使用 go1.13.7。有问题的函数如下所示:func init() {     jsonrpc.HandleFunc("create-context", ContextHandler)}jsonrpc 是我编写的一个包,该函数将一个条目添加到那里的未导出的全局映射中。
查看完整描述

1 回答

?
杨魅力

TA贡献1811条经验 获得超6个赞

我试过:


package main


import "C"


import "fmt"


func init() {

        fmt.Println("in init")

}


//export Yo

func Yo() {

        fmt.Println("that's what's up")

}


func main() {

        fmt.Println("vim-go")

}

go build -buildmode=c-shared lib.go我得到了一个lib.h


#include <stdio.h>

#include "lol.h"


int main() {

    Yo();

}

我编译:gcc -o client main.c ./lib.so


我得到了一个:


in init

that's what's up

所以在我看来它有效。


查看完整回答
反对 回复 2022-05-18
  • 1 回答
  • 0 关注
  • 326 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号