gpt4 book ai didi

c - 当我从 Julia 代码调用 midiOutOpen 时,它返回未知错误

转载 作者:行者123 更新时间:2023-11-30 15:17:28 27 4
gpt4 key购买 nike

我正在尝试从我编写的一些 Julia 代码发送 midi 消息,但我在使用 midiOutOpen 函数时遇到问题。我正在关注本教程 here ,但是我从该函数得到的输出没有意义。

这是我的 Julia 代码:

const CALLBACK_NULL = uint32(0x00000001)
function openoutputdevice(id::Uint32)
handle = uint32(0)

err = ccall((:midiOutOpen, :Winmm), stdcall,
Uint32,
(Ptr{Uint32}, Uint32, Ptr{Uint32}, Ptr{Uint32}, Uint32),
&handle, id, C_NULL, C_NULL, CALLBACK_NULL)

println(hex(err))
handle
end

句柄始终为 0,返回的错误为“10”。我已经搜索了 Windows 头文件,这似乎与函数中预期的任何错误都不匹配(请参阅 here ),所以我更倾向于认为我是在 ccall 中映射错误的 Julia 数据类型。我已经很长时间没有做过任何与 C 相关的事情了,所以我希望这有明显的问题。我看到的唯一奇怪的事情是,CALLBACK_NULL 在 mmsyscom.h 中定义为 0x000000001 - 一个 9 位十六进制数字,即使函数文档为 midiOutOpen 的最终参数指定了 DWORD。

有什么想法吗?

最佳答案

错误为 MMSYSERR_INVALFLAG,因为 CALLBACK_NULL 定义为:

#define CALLBACK_NULL 0x00000000l

最后是一个小写字母“L”,而不是数字 1(一)。更正该值后,调用成功。

关于c - 当我从 Julia 代码调用 midiOutOpen 时,它返回未知错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32447046/

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