在windows

时间:2016-01-13 17:00:43

标签: c++ windows dll leap-motion vst

我试图在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。如何做到这一点?

1 个答案:

答案 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 *);