我想为Delphi Android应用添加MIDI功能.MIDI可通过SoniVox库获得,可通过Android NDK访问.可以在此处找到此驱动程序的示例.驱动程序是用C语言编写的,使用NDK可以创建一个可以通过System.loadLibrary调用访问的本机语言库.
// MidiDriver - An Android Midi Driver.
// Copyright (C) 2013 Bill Farmer
// Bill Farmer william j farmer [at] yahoo [dot] co [dot] uk.
#include <jni.h>
// for EAS midi
#include "eas.h"
#include "eas_reverb.h"
// determines how many EAS buffers to fill a host buffer
#define NUM_BUFFERS 4
// EAS data
static EAS_DATA_HANDLE pEASData;
const S_EAS_LIB_CONFIG *pLibConfig;
static EAS_PCM *buffer;
static EAS_I32 bufferSize;
static EAS_HANDLE midiHandle;
// init EAS midi
jint
Java_org_drivers_midioutput_MidiDriver_init(JNIEnv *env,
jobject …Run Code Online (Sandbox Code Playgroud) 我希望有一段时间可以在Android目标的Delphi XE5中播放MIDI.我以前的几个问题与这个"任务"有关:-).我已向embarcadero提交了两个请求:#119422为TMediaPlayer添加MIDI支持,#119423为Firemonkey添加MIDI框架,但这没有帮助.我终于成功了.据我所知,有更多的人在Android上寻找MIDI我发布这个问题的答案文件.
我知道在加载时隐式链接到库可能会导致性能提升,因此我想知道在编译时以这种方式链接是否是一种好的做法,从而增加可执行文件大小(不可否认,这只是边际)与明确链接相比在运行时.我的问题是,当链接到位于System32中的Microsoft Windows DLL文件时,在加载时链接是否"更好",因为您可以确定库存在或遵循显式方法?
使用的语言是Delphi(pascal),有问题的库是WTsAPI32.dll - 终端服务.
编辑:正如所指出的那样 - 我选择的语言不正确并且已经修改.另外,由于在Unix中只有每一个与库有很多链接,我对可执行文件大小的评论可以省略,我当时认为我实际上是指静态链接将库代码捆绑到可执行文件中,我现在意识到这一点使用dll文件时是不可能的(DUH!).谢谢大家.