cannam@108: cannam@108: The Vamp Plugin SDK -- Platform Notes for Visual C++ on Windows cannam@108: =============================================================== cannam@108: cannam@108: Visual C++ Project Files cannam@108: ------------------------ cannam@108: cannam@108: Three Visual C++ project files are included with the SDK: cannam@108: cannam@108: - build/VampPluginSDK.vcproj cannam@108: cannam@108: This builds the plugin SDK into a single static library, but does cannam@108: not build the example plugins, the host SDK, or the host. (We cannam@108: recommend using static linkage for the SDK rather than distributing cannam@108: it as a DLL, particularly when building plugins.) cannam@108: cannam@108: - build/VampHostSDK.vcproj cannam@108: cannam@108: This builds the host SDK into a single static library, but does not cannam@108: build the plugin SDK, example plugins, or host. cannam@108: cannam@108: - build/VampExamplePlugins.vcproj cannam@108: cannam@108: This builds the example plugins DLL, but does not build the plugin cannam@108: or host SDKs or the host. You don't need to build the plugin SDK cannam@108: before this, because this project simply includes the plugin SDK cannam@108: files rather than using the library. cannam@108: cannam@108: Of course, when using Visual Studio or another IDE to build a plugin cannam@108: or host using the SDK, you may simply add the .h and .cpp files in the cannam@108: vamp-sdk or vamp-hostsdk directories to your existing project. This cannam@108: is the approach taken in the VampExamplePlugins project. cannam@108: cannam@108: As the command-line host has additional library dependencies (namely cannam@108: libsndfile), no pre-packaged project is included to build it. cannam@108: cannam@108: cannam@108: Installing the Example Plugins cannam@108: ------------------------------ cannam@108: cannam@108: To install the example plugins so you can load them in Vamp hosts, cannam@108: copy the files cannam@108: cannam@108: build\release\vamp-example-plugins.dll cannam@108: and cannam@108: examples\vamp-example-plugins.cat cannam@108: cannam@108: to cannam@108: cannam@108: C:\Program Files\Vamp Plugins cannam@108: cannam@108: cannam@108: Plugin Linkage cannam@108: -------------- cannam@108: cannam@108: Vamp plugins are distributed as dynamic libraries (DLLs). A properly cannam@108: packaged Vamp plugin DLL should export exactly one public symbol, cannam@108: namely the Vamp API entry point vampGetPluginDescriptor. cannam@108: cannam@108: One nice tidy way to achieve this with Visual Studio is to add the cannam@108: linker option /EXPORT:vampGetPluginDescriptor to your project. (All cannam@108: of the other symbols will be properly hidden, because that is the cannam@108: default for the Visual Studio linker.) The included example plugins cannam@108: project in build/VampExamplePlugins.vcproj does this. cannam@108: cannam@108: Alternatively, you may modify vamp/vamp.h to add the cannam@108: __declspec(dllexport) attribute to the vampGetPluginDescriptor cannam@108: declaration. This is not present by default, because it isn't cannam@108: portable and, as we only want one symbol exported, the above linker cannam@108: option works equally well without code changes. cannam@108: cannam@108: (If you don't take at least one of these actions, your plugin library cannam@108: simply will not load in any host.) cannam@108: cannam@108: cannam@108: Using MinGW/Cygwin cannam@108: ------------------ cannam@108: cannam@108: Refer to README.linux for build instructions using the GNU toolchain. cannam@108: cannam@108: cannam@108: Test Your Plugins cannam@108: ----------------- cannam@108: cannam@108: The Vamp Plugin Tester is a vital utility which you can use to test cannam@108: your plugins for common problems. It can help you if you're having cannam@108: problems getting your plugin to work at all, and you're strongly cannam@108: advised to use it before you release anything. Download it from the cannam@108: Vamp plugins site now! cannam@108: