1

我只是在写我的学士论文......它是一个 VST 插件(DLL 库),它依赖于 libfftw3-3.dll(FFT 库)。在我的笔记本电脑(64 位 Win7 终极版)上进行测试时,我发现了一个问题……我无法将此 VST 导入任何音乐工作室……

在我的 PC 上,我已经在 VstPlugins 目录中复制了 VST 插件 dll 和 libfftw3-3.dll,但是当我尝试导入此 VST 时,系统告诉我找不到 libfftw3-3.dll。

这不是 COM 对象,所以我无法使用 regsvr32 注册它...

你能帮我吗,我做错了什么?我怎样才能让它发挥作用?

4

1 回答 1

2

VST 是一个 COM 组件。它由客户端程序加载,底层调用是 CoCreateInstance()。这里的问题是 Windows 只会在与您使用的 DLL 的客户端程序相关的目录中查找。您肯定没有将 DLL 复制到 EXE 的目录中,也不应该。

这是 COM 的一个普遍问题,干净利落地解决它并不容易。Windows 并排缓存是一种解决方案,但您将在解决之前就毕业了。您可以通过修改系统 PATH 环境变量来解决问题。或者绝望的举动,将 DLL 复制到 c:\windows\system32(在 64 位版本的 Windows 上为 syswow64)。只是为了让你毕业,请注意。

如果您仍然遇到问题,那么您可能还有其他不知道的依赖项。CRT dll 是一个典型的,当您使用/MD 编译代码时,您会得到它。您可以使用 SysInternals 的 ProcMon 实用程序追踪这些依赖项,您会看到客户端程序正在搜索 DLL。或 Profile 模式下的 DependencyWalker (F9)。

于 2012-04-17T00:39:19.520 回答