gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 22:34:44 24 4
gpt4 key购买 nike

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

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

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

最佳答案

我尝试了:

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

因此在我看来,它可行。

关于go - init()函数不能在共享库中运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60261436/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com