我试图在Windows 10 x64下使用带有JUCE vst插件的Leap motion sdk。
我已经设置了我的项目exactly like this,并确保Leap.dll在我的输出VstPlugins目录中。但是我的DAW(收割者)无法检测/打开我的插件的dll。我还尝试将我的x86 Leap.dll放在C:\ Windows \ System32(和我的x64版本在C:\ Windows \ SysWOW64中),并尝试regsvr32它们,只是被告知the DLLRegistryServer entry point cannot be found。
当我评论与Leap sdk相关的所有内容时,我的插件在Reaper中被检测到并且其他一切都有效,而在Mac OSX上我也可以使用Leap,所以看起来我的问题确实是我的Windows系统确实不知道它必须使用Leap.dll和我的插件的dll。如何做到这一点?
答案 0 :(得分:1)
如果是动态库,则无需将其包含在项目中。您只需将文件复制到特定文件夹中的用户计算机上,然后在插件代码中添加如下内容:
DynamicLibrary dynLib;
bool loaded = dynLib.open("DYNAMIC_LIBRARY_FULL_PATH");
if(loaded)
{
FUNCTIONTEMPLATE functiontemplate = (FUNCTIONTEMPLATE) dynLib.getFunction("functionName");
char *input;
int output = functiontemplate (input);
}
当然如果你自己没有编写动态库,那么你需要像依赖者walker这样的东西来检查dll并找到函数声明或者从编写dll的人那里读取文档。无论如何,您需要知道确切的函数声明格式并创建指向它的指针。想象一下,它是接受char *作为输入并返回int作为输出的函数,那么你需要在.cpp或.c代码之上有这样的一行:
typedef int (*FUNCTIONTEMPLATE) (char *);