OpenHarmony开发者论坛

标题: CGO的应用或动态库,无法在设备上跑起来,非CGO可以,但中文显示乱码 [打印本页]

作者: kangduola    时间: 2023-12-20 14:47
标题: CGO的应用或动态库,无法在设备上跑起来,非CGO可以,但中文显示乱码
[md]```
package main
/*
#include <stdio.h>

int add( int a, int b )
{
return a + b;
}
*/
import "C"
import (
"fmt"
)

func main() {
fmt.Println( "CGO 32" )
fmt.Println( "我爱中国" )

ret := int( C.add( 666, 888 ) )

fmt.Printf( "ret:%d\r\n", ret )
}
```

这个是CGO代码,用ohos编译器可编译出执行程序,但是在设备上运行后崩了,反馈Signal 11。去掉C元素后编译,运行正常,但是“我爱中国”显示乱码。

### 期望:

OpenHarmony系统支持CGO,即Go的应用和Go编译的动态库。

### 如何复现该缺陷

go env -w GOOS=linux
go env -w CGO\_ENABLED=1
go env -w GOARCH=arm
go env -w GOARCH=arm
go env -w CC="/opt/ohos-sdk/linux/native/llvm/bin/clang --target=arm-linux-ohos"
go env -w CXX="/opt/ohos-sdk/linux/native/llvm/bin/clang++ --target=arm-linux-ohos"
go env -w CGO\_LDFLAGS="--target=arm-linux-ohos"

编译环境变量设置举例,用CGO应用在设备上加权限后执行
[/md]
作者: 深开鸿_王石    时间: 2023-12-28 21:05
signal11是可以在/data/log/faultlog里看到cppcrash的log的,你可以贴出来看看;大概率分析是cgo用gcc编译可能引入了些glib的库,这有license原因,ohos里用的是muslc;然后中文的原因应该是编码问题了,用UTF8就好了




欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/) Powered by Discuz! X3.5