由于 cgo,我正在尝试在 C 程序中使用一些 Go 代码
我的 Go 文件如下所示:
package hello
import (
"C"
)
//export HelloWorld
func HelloWorld() string{
return "Hello World"
}
我的 C 代码是这样的:
#include "_obj/_cgo_export.h"
#include <stdio.h>
int main ()
{
GoString greeting = HelloWorld();
printf("Greeting message: %s\n", greeting.p );
return 0;
}
但是我得到的输出不是我所期望的:
问候语:
我猜这是一个编码问题,但关于它的文档很少,我对 C 几乎一无所知。
你知道那段代码出了什么问题吗?
编辑 :
正如我刚刚在下面的评论中所说:
我 [...] 试图返回并仅打印一个 Go int(这是一个 C 的“long long”)并且也得到了错误的值。
所以看起来我的问题不在于字符串编码或空终止,而可能在于我如何编译整个事情
我很快就会添加我所有的编译步骤
慕丝7291255
尚方宝剑之说
相关分类