[英]midiOutOpen is returning an unknown error when I call it from Julia code
我正在尝试从我编写的一些Julia代码发送midi消息,但是我遇到了midiOutOpen函数的麻烦。 我在这里遵循本教程,但是我从该函数获得的输出没有意义。
这是我的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头文件,这似乎与该函数可能出现的任何错误都不匹配(请参见此处 ),因此我更倾向于认为我正在映射调用中错误的Julia数据类型。 自从我完成了所有与C相关的工作以来已经有很长时间了,所以我希望这显然有问题。 我所看到的唯一奇怪的是,即使函数doc为midiOutOpen的最终参数指定了DWORD,mmsyscom.h中CALLBACK_NULL的定义为0x000000001-9位十六进制数字。
有任何想法吗?
错误是MMSYSERR_INVALFLAG
因为CALLBACK_NULL
定义为:
#define CALLBACK_NULL 0x00000000l
最后是小写字母“ L”,而不是数字1(一)。 纠正此值后,调用成功。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.