我试图从audioDSP相关的Linux库( http://breakfastquay.com/rubberband/ )build立一个Win32 DLL。 有Linux的makefile和configuration脚本,但没有Windows的帮助。 作者提供了一个使用该库的示例应用程序的Win32二进制文件,并且我看到一些散落在附近的“#ifdef MSVC”和“#ifdef WIN32”,所以我不认为我是从头开始的,米卡住了。
由于我在这两个平台的编程知识相当有限,所以我会很感激任何帮助。
首先,在这里开始的正确方法是什么? 视觉工作室? Cygwin的? 最初,我开始在Visual Studio中创build一个Win32 DLL项目,添加源文件,考虑添加一个.def文件等,但在某些时候,我觉得这是无济于事。
至于Cygwin,这是第一次使用它,我甚至不知道这是Cygwindevise的。 是吗?
在Cygwin上,我运行了./configure并卡住了这样的东西:
“检查SRC …configuration:错误:不符合软件包要求(采样率):没有find软件包”采样率“
看完日志后,看来pkg-config正在查找samplerate.pc。 如何在Windows中处理包? libsamplerate只是一个开源的库,我有这个源代码和一个DLL。 但我不知道如何使用它们来满足librubberband的依赖性要求(这是我正在尝试构build的)
我完全失去了这一点,如果任何人都可以给我一个正确的方向,并有一个更简单的方法来做到这一点?
提前谢谢了。
如果你仍然坚持这一点,我可以抛出一点点光。
您可能必须从源代码构建所有内容(或者将环境库安装在您的环境中)。 你正在使用Cygwin,我也会推荐MinGW和MSYS,但是有时候使用这个组合来编译程序或库是不可能的。
所以如果使用Cygwin,首先确保你有一个适当的环境安装。 这是你有正确的发展头安装。
然后下载libsndfile 。 将源解压缩到一个目录,然后从Cygwin bash shell导航到该目录。 有执行:
./configure make make install prefix=/cygdrive/c/cygwin
请注意,我使用前缀,该前缀应指向Cygwin安装的目录,以正确安装库(同样发生在MinGW和MSYS,前缀应该指向MinGW安装目录)。 也许在前缀中使用usr
目录,我从来没有尝试过。
现在下载FFTW ,因为它将需要libsamplerate和橡皮筋。 与libsndfile相同的步骤:使用前缀提取,配置,制作和安装。 现在将FFTW的头文件(在/cygdrive/c/cygwin/include
)复制到usr
目录下的include
目录中(例如/cygdrive/c/cygwin/usr/include
)。
下一步SRC (libsamplerate),相同的过程。
然后是Vamp插件SDK 。 为了编译它,你可能需要编辑src\vamp-hostsdk\PluginLoader.cpp
,从dlopen()
调用中删除RTLD_LOCAL
(这是安全的,这已经是默认行为了)。
此外,您可能需要手动安装(在我的经验,它不喜欢前缀)。 或者将环境变量PKG_CONFIG_PATH
设置为指向pkgconfig的路径,例如:
set PKG_CONFIG_PATH=/cygdrive/c/cygwin/lib/pkgconfig:/usr/local/lib/pkgconfig
现在,使用LADSPA头文件的内容在include目录中创建一个名为ladspa.h
的文件
最后,配置和建立橡皮筋,它应该找到它需要的一切。
要使用MinGW在MSYS中构建,请按照相同的步骤使用相应的前缀。 使用Visual Studio是另一种选择,但是您可能需要使用一些预先构建的库(例如libsndfile),因为在Windows中本地构建Linux库可能很复杂,甚至不可能(无需黑客源代码)在VS.
无论如何,橡皮筋的作者提供了二进制文件; 我想你应该考虑使用它们而不是通过所有这些。
Linux到w32大多是一件棘手的事情。
对于您的每个依赖关系,请下载源代码和:
./configure make sudo make install
另外,我建议你使用MinGW + msys代替CygWin(因为后者会生成依赖于库的可执行文件)。 但是,在你的情况下,使用VS方法 – 将节省你很多时间。