Javascript 将Ref{Cwstring}()转换为String

Javascript 将Ref{Cwstring}()转换为String,javascript,julia,chakracore,Javascript,Julia,Chakracore,我目前正在为ChakraCore JavaScript引擎编写一个ccall绑定,有一个函数具有此定义: CHAKRA_API JsStringToPointer( _在ujsvalueref stringValue中, _输出结果缓冲区(*stringLength)常量WCHAR**stringPtr, _超出尺寸*长度 ) 因此,我通过:resultWC=Ref{Cwstring}() 我尝试了一系列转换函数来获取一个字符串,但没有任何效果。我想我需要这个: 但是Base.transcod

我目前正在为ChakraCore JavaScript引擎编写一个
ccall
绑定,有一个函数具有此定义:

CHAKRA_API JsStringToPointer(
_在ujsvalueref stringValue中,
_输出结果缓冲区(*stringLength)常量WCHAR**stringPtr,
_超出尺寸*长度
)
因此,我通过:
resultWC=Ref{Cwstring}()

我尝试了一系列转换函数来获取一个
字符串
,但没有任何效果。我想我需要这个:

但是
Base.transcode
需要一个向量/数组,我不知道如何在Julia中为这个案例进行简单的C风格转换

有没有办法把
Ref{Cwstring}()
变成
String

在修复之前,您可以添加自己的方法:

function Base.unsafe_string(w::Cwstring)
    ptr = convert(Ptr{Cwchar_t}, w)
    ptr == C_NULL && throw(ArgumentError("cannot convert NULL to string"))
    buf = Cwchar_t[]
    i = 1
    while true
        c = unsafe_load(ptr, i)
        if c == 0
            break
        end
        push!(buf, c)
        i += 1
    end
    return String(transcode(UInt8, buf))
end
那你可以打个电话过来

unsafe_string(resultWC[])

谢谢,Emojis也可以使用,即使Windows cmd.exe在2018年也无法正确显示其中的大部分:在某种程度上,我们希望捆绑我们自己的终端(),直到那时,您可以尝试