50 精币
最近在研究bass.dll的东西,应该很多人研究吧。目前我卡在用bassasio.dll读取ASIO设备信息那里了,官方的C语言例子写得很简单那,我找着翻译成易语言 的但是执行结果不对。说下具体的问题:
有一个数据类型,在C里是这样的:typedef struct {
char name[32]; // driver name
DWORD version; // driver version
DWORD inputs; // number of inputs
DWORD outputs; // number of outputs
DWORD bufmin; // minimum buffer length
DWORD bufmax; // maximum buffer length
DWORD bufpref; // preferred/default buffer length
int bufgran; // buffer length granularity
DWORD initflags; // BASS_ASIO_Init "flags" parameter
} BASS_ASIO_INFO; 复制代码 我翻译成易语言是这样的:.版本 2
.数据类型 BASS_ASIO_INFO, , 使用BASS_ASIO_GetInfo时存储的设备信息
.成员 name, 文本型, , , 设备或驱动的名称
.成员 version, 整数型, , , 驱动版本
.成员 inputs, 整数型, , , 可用的输入通道数量
.成员 outputs, 整数型, , , 可用的输出通道数量
.成员 bufmin, 整数型, , , 最小缓冲长度
.成员 bufmax, 整数型, , , 最大缓冲长度
.成员 bufpref, 整数型, , , The buffer length granularity, that is the smallest possible length change... -1 = the possible buffer lengths increase in powers of 2.
.成员 bufgran, 整数型, , , The buffer length granularity, that is the smallest possible length change... -1 = the possible buffer lengths increase in powers of 2
.成员 initflags, 整数型, , , 初始化标记。 复制代码 调用时C里是这样的: BASS_ASIO_INFO i;
BASS_ASIO_GetInfo(&i); 复制代码 然后就能用i.name这样的形式读出内容。
我在易语言里是这样的:.版本 2
.DLL命令 BASS_ASIO_GetInfo, 逻辑型, "bassasio.dll", "BASS_ASIO_GetInfo", , 取正在使用的ASIO设备信息
.参数 info, 整数型, , 用于存放设备信息的变量指针。
.版本 2
.支持库 shellEx
输出调试文本 (BASS_ASIO_GetInfo (取指针地址 (局部_ASIO设备信息.name)))
输出调试文本 (局部_ASIO设备信息.name)
输出调试文本 (局部_ASIO设备信息.version)
输出调试文本 (局部_ASIO设备信息.inputs)
输出调试文本 (局部_ASIO设备信息.outputs)
输出调试文本 (局部_ASIO设备信息.bufmin)
输出调试文本 (局部_ASIO设备信息.bufmax)
输出调试文本 (局部_ASIO设备信息.bufpref)
输出调试文本 (局部_ASIO设备信息.bufgran)
输出调试文本 (局部_ASIO设备信息.initflags)
复制代码 这样运行的结果“局部_ASIO设备信息.name”是对的,其他都是错的。
用BASS_ASIO_GetInfo (取指针地址 (局部_ASIO设备信息))、 BASS_ASIO_GetInfo (取变量地址(局部_ASIO设备信息))、 BASS_ASIO_GetInfo (取变量数据地址 (局部_ASIO设备信息))什么的都不行。
不知道问题出在哪里,还望会的朋友多多指点。
我来回答