E4219

E4219#

编译器诊断名称:invalid_export_name

#export_name 属性无效。MoonBit 目前要求所有后端的导出名都是唯一且有效的 C 符号标识符。该属性只能用于外部库包中无可选参数的公开、非泛型函数定义。

警告

已知编译器问题:#export_name 目前会对所有后端施加 C 符号标识符限制。WebAssembly 导出名是 UTF-8 字符串,并不限于 C 标识符。

错误示例#

///|
#export_name("bad-name")
pub fn add_one(value : Int) -> Int {
  value + 1
}

修改建议#

使用有效的符号名称,并通过 pkgtype(kind: "foreign_library") 将包声明为外部库。

///|
#export_name("add_one")
pub fn add_one(value : Int) -> Int {
  value + 1
}