繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM