cannam@239: cannam@239: The Vamp Plugin SDK -- Platform Notes for Visual C++ on Windows cannam@239: =============================================================== cannam@239: Chris@489: This version of the SDK is contains project files for Visual C++ 2013 Chris@489: or newer. You can build the SDK in either 32-bit or 64-bit (x64) mode, Chris@489: but remember that a 32-bit host generally cannot load 64-bit plugins. cannam@239: cannam@239: Chris@489: Visual C++ Projects and Solution Files Chris@489: -------------------------------------- Chris@489: Chris@489: Two Visual C++ solution files are included: Chris@489: Chris@489: - build/VampSDK.sln Chris@489: Chris@489: Builds the plugin SDK and the example plugins. Chris@489: See the VampPluginSDK and VampExamplePlugins projects below. Chris@489: Chris@489: - build/VampHostSDK.sln Chris@489: Chris@489: Builds the host SDK and the simple-host command-line application. Chris@489: See the VampHostSDK and VampSimpleHost projects below. Chris@489: Note that the VampSimpleHost requires the libsndfile library; if Chris@489: you want to build without that, use the VampHostSDK project rather Chris@489: than this solution. Chris@489: Chris@489: Four Visual C++ project files are included: Chris@489: Chris@489: - build/VampPluginSDK.vcxproj cannam@239: cannam@239: This builds the plugin SDK into a single static library, but does cannam@239: not build the example plugins, the host SDK, or the host. (We cannam@239: recommend using static linkage for the SDK rather than distributing cannam@239: it as a DLL, particularly when building plugins.) cannam@239: Chris@489: - build/VampExamplePlugins.vcxproj cannam@239: cannam@239: This builds the example plugins DLL, but does not build the plugin cannam@239: or host SDKs or the host. You don't need to build the plugin SDK cannam@239: before this, because this project simply includes the plugin SDK cannam@239: files rather than using the library. cannam@239: Chris@489: - build/VampHostSDK.vcxproj Chris@489: Chris@489: This builds the host SDK into a single static library, but does not Chris@489: build the plugin SDK, example plugins, or host. Chris@489: Chris@489: - build/VampSimpleHost.vcxproj Chris@489: Chris@489: This builds the simple host command line program. You must have Chris@489: the libsndfile library installed in order to build this project. Chris@489: cannam@239: Of course, when using Visual Studio or another IDE to build a plugin cannam@239: or host using the SDK, you may simply add the .h and .cpp files in the cannam@239: vamp-sdk or vamp-hostsdk directories to your existing project. This cannam@239: is the approach taken in the VampExamplePlugins project. cannam@239: cannam@239: cannam@239: Installing the Example Plugins cannam@239: ------------------------------ cannam@239: cannam@239: To install the example plugins so you can load them in Vamp hosts, cannam@239: copy the files cannam@239: cannam@239: build\release\vamp-example-plugins.dll cannam@239: and cannam@239: examples\vamp-example-plugins.cat cannam@239: Chris@489: to the appropriate location as follows: Chris@489: Chris@489: * For 32-bit plugins running on a 32-bit system, and Chris@489: for 64-bit plugins running on a 64-bit system cannam@239: cannam@239: C:\Program Files\Vamp Plugins cannam@239: Chris@489: * For 32-bit plugins running on a 64-bit system Chris@489: Chris@489: C:\Program Files\Vamp Plugins (x86) Chris@489: Chris@489: You cannot use 64-bit plugins on a 32-bit system. Chris@489: cannam@239: cannam@239: Plugin Linkage cannam@239: -------------- cannam@239: cannam@239: Vamp plugins are distributed as dynamic libraries (DLLs). A properly cannam@239: packaged Vamp plugin DLL should export exactly one public symbol, cannam@239: namely the Vamp API entry point vampGetPluginDescriptor. cannam@239: cannam@239: One nice tidy way to achieve this with Visual Studio is to add the cannam@239: linker option /EXPORT:vampGetPluginDescriptor to your project. (All cannam@239: of the other symbols will be properly hidden, because that is the cannam@239: default for the Visual Studio linker.) The included example plugins Chris@489: project in build/VampExamplePlugins.vcxproj does this. cannam@239: cannam@239: Alternatively, you may modify vamp/vamp.h to add the cannam@239: __declspec(dllexport) attribute to the vampGetPluginDescriptor cannam@239: declaration. This is not present by default, because it isn't Chris@489: portable among compilers and, as we only want one symbol exported, the Chris@489: above linker option works equally well without code changes. cannam@239: cannam@239: (If you don't take at least one of these actions, your plugin library cannam@239: simply will not load in any host.) cannam@239: cannam@239: cannam@239: Using MinGW/Cygwin cannam@239: ------------------ cannam@239: cannam@239: Refer to README.linux for build instructions using the GNU toolchain. cannam@239: cannam@291: cannam@291: Test Your Plugins cannam@291: ----------------- cannam@291: cannam@291: The Vamp Plugin Tester is a vital utility which you can use to test cannam@291: your plugins for common problems. It can help you if you're having cannam@291: problems getting your plugin to work at all, and you're strongly cannam@291: advised to use it before you release anything. Download it from the cannam@291: Vamp plugins site now! cannam@291: