Как использовать внешнюю DLL при построении VST под Windows

Я пытаюсь использовать Leap motion SDK с плагином JUCE VST под Windows 10 x64.

Я настроил свой проект именно такой, и удостоверился, что Leap.dll был в моем выводе, каталоге VstPlugins. Однако мой DAW (Reaper) не может обнаружить / открыть DLL моего плагина. Я также попытался поместить мой x86 Leap.dll в C: \ Windows \ System32 (и мою версию x64 в C: \ Windows \ SysWOW64), и попытался regsvr32 их, только чтобы сказать точка входа DLLRegistryServer не может быть найдена.

Когда я комментирую все, что связано с Leap SDK, мой плагин обнаруживается в Reaper, а все остальное работает, и в Mac OSX я также могу использовать Leap, так что, похоже, моя проблема в том, что моя система Windows не знает его должен использовать Leap.dll с DLL моего плагина. Как можно это сделать?

0

Решение

Если это динамическая библиотека, вам не нужно включать ее в свой проект. Все, что вам нужно, это скопировать файл на компьютер пользователя в определенной папке, а затем в свой код плагина добавить что-то вроде этого:

DynamicLibrary dynLib;
bool loaded = dynLib.open("DYNAMIC_LIBRARY_FULL_PATH");
if(loaded)
{
FUNCTIONTEMPLATE functiontemplate = (FUNCTIONTEMPLATE) dynLib.getFunction("functionName");
char *input;
int output = functiontemplate (input);
}

Конечно, если вы не написали динамическую библиотеку самостоятельно, то вам нужно что-то вроде обходчика зависимостей, чтобы проверить внутри dll и найти объявление функции или прочитать документацию от того, кто написал dll. В любом случае вам нужно знать точный формат объявления функции и создать указатель на него. Представьте, что это функция, которая принимает char * в качестве входных данных и возвращает int в качестве выходных данных, тогда вам нужно иметь такую ​​строку поверх кода .cpp или .c:

typedef int (*FUNCTIONTEMPLATE) (char *);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]