The error log should output a list of known layers, if it outputs no known layers then you have the same problem that I ran into.
Basically since the layer object factory is defined in a header file, it is instantiated multiple times, thus the object factory that your application is trying to access is not the one where all the layers are registered to in the caffe library.
The fix for this is to move the object factory definition and instantiation into a cpp file in the caffe library.
This fork has this fix applied:
I'm currently working on testing an updated branch with a few other useful changes for when integrating caffe into C++ projects.