在我的程序中,我使用的是共享库的方法。
我的程序是为数十万个不同的设备(Android)编译的,我无法为每个目标系统提供特定的二进制文件。
可悲的是,目标设备上共享库的方法可能有 2 个不同的签名:
系统 A
int (*open_output_stream)(
struct audio_hw_device *dev, // equal on all systems
audio_io_handle_t handle, // unimportant
audio_devices_t devices, // unimportant
audio_output_flags_t flags, // unimportant
struct audio_config *config, // unimportant
struct audio_stream_out **stream_out // equal on all systems
);
系统 B
int (*open_output_stream)(
struct audio_hw_device *dev, // equal on all systems
uint32_t devices, // unimportant
int *format, // unimportant
uint32_t *channels, // unimportant
uint32_t *sample_rate, // unimportant
struct audio_stream_out **out // equal on all systems
);
在我的代码中,我需要使用第一个参数(struct audio_hw_device)和最后一个参数(struct audio_stream_out)调用该方法以获得我需要的结果。
之间的其他 4 个参数对我来说并不重要,我会将它们替换为 0 或 NULL。
谁能告诉我我是否可以调用这些方法,例如
audio_hw_device_t *outHwDev
int res = open_output_stream)(
outHwDev, // equal on all systems
NULL or 0 ?, // unimportant
NULL or 0 ?, // unimportant
NULL or 0 ?, // unimportant
NULL or 0 ?, // unimportant
&outStream // equal on all systems
);
还是在 C: 中可能出现类似“try{callFunction}(catch UnknownMethodException){}”的东西?:)
没有官方的头文件,我必须自己定义它,但这在这里应该很重要。