Correct. And it turns out it was the crucial piece that was missing. The problem appears to have been the order in which the #includes were listed.
I had:
#ifdef __cplusplus
extern "C" {
#endif
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
#include "ppport.h"
#ifdef __cplusplus
}
#endif
#include <iostream>
#include <string>
//plus a bunch more standard C++ includes
// rest of C++ and XS code below.
These errors went away just by switching the order of the includes, i.e.:
#include <iostream>
#include <string>
//plus a bunch more standard C++ includes
#ifdef __cplusplus
extern "C" {
#endif
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
#include "ppport.h"
#ifdef __cplusplus
}
#endif
// C++, XS code below
Now, don't ask my why this worked, I just know that it did. I guess -- but this is just a guess -- it could be some Perl headers interfering with use of standard headers of the same name or some such.
--DrWhy
"If God had meant for us to think for ourselves he would have given us brains. Oh, wait..."
|