Here's the problem. In the trunk of the OpenCV repository, the method is virtual and overriden by the LBPH FaceRecognizer. So it gets called by the rules of late binding in C++. This works for C++ and all the wrappers. Everything is fine! But and here is the problem: In the 2.4 branch of OpenCV the team wants to guarantee binary compability and so the virtual keyword was removed from the method signature. This causes the problem, because the overriden methods don't get called anymore. I'll update this post when it is fixed.
Sorry, I forgot to update. So... The method was virtual, when I commited it to the OpenCV 2.4 trunk. Now the OpenCV team wants to ensure Binary Compability through the versions, so in the OpenCV 2.4 BRANCH (from which OpenCV 2.4.3 is created) the virtual keyword was removed. This of course caused the errors described in here. When I was contacted, that it's not working I looked up the OpenCV TRUNK and the method was still virtual. So the trunk worked fine. At this point I noticed it was only changed in the BRANCH and contacted Vadim to find out what's going on. Vadim then commited some kind of fix, by leaving the method non-virtual and dynamically upcasting the FaceRecognizer object. So the problem should be resolved by now.