Hello!
Two possible lines of enquiry:
1. No plugin entry point?
Did you compile _just_ the PercussionOnsetDetector.cpp file into the DLL?
A Vamp plugin library also requires a public entry point which is a C function that lists the plugins that are available in the library. In the example plugin set, this is provided by the file plugins.cpp -- you will need to compile either this file, or a similar one produced by cut-and-paste but listing only the PercussionOnsetDetector and not the rest of the example plugins, into your DLL as well.
2. Plugin entry point is not public in the DLL?
If you are building using Visual Studio, then the default for the VS linker is to make all symbols in the DLL hidden, which means the host will not be able to find the appropriate entry point when it looks at the plugin library.
You need to change this so that the single entry point (vampGetPluginDescriptor in the plugins.cpp file) is made public in the DLL. Windows-specific code often does this with a __declspec(dllexport) attribute before the function declaration in the code, but this does leave you with less portable code. Another way that I think is preferable is to add the linker option /EXPORT:vampGetPluginDescriptor to the project.
The next release of the SDK (due shortly) will be clearer about this in the documentation -- the current version does not really have any documentation specific to Visual Studio (which is the only major compiler/linker for which this is an issue -- the OS/X linker and the GNU linker on Linux both make symbols public by default). It will also include an example project with this option set appropriately.
Hope this helps!
Chris