#include #ifdef _WIN32 #define DLLEXPORT __declspec(dllexport) #else #define DLLEXPORT #endif class DLLEXPORT Foo { public: Foo(); ~Foo(); virtual int TakeAVoid(void); virtual int TakeABool(bool i); virtual int TakeAChar(char i); virtual int TakeAShort(short i); virtual int TakeAnInt(int i); virtual int TakeALong(long i); virtual int TakeALongLong(long long i); virtual int TakeAFloat(float i); virtual int TakeADouble(double i); virtual int TakeAString(char *i); virtual int TakeAnArray(int i[]); virtual int TakeAPointer(void *i); virtual int TakeABoolPointer(bool *i); virtual int TakeACharPointer(char *i); virtual int TakeAShortPointer(short *i); virtual int TakeAnIntPointer(int *i); virtual int TakeALongPointer(long *i); virtual int TakeALongLongPointer(long long *i); virtual int TakeAFloatPointer(float *i); virtual int TakeADoublePointer(double *i); virtual int TakeAUInt(unsigned int i); virtual int TakeAUShort(unsigned short i); virtual int TakeAUChar(unsigned char i); virtual int TakeAInt64(long long i); virtual int TakeAULongLong(unsigned long long i); virtual int TakeAUInt64(unsigned long long i); }; Foo::Foo() { }; Foo::~Foo() { }; int Foo::TakeAVoid(void) { return 0; } int Foo::TakeABool(bool i) { return 1; } int Foo::TakeAChar(char i) { return 2; } int Foo::TakeAShort(short i) { return 3; } int Foo::TakeAnInt(int i) { return 4; } int Foo::TakeALong(long i) { return 5; } int Foo::TakeALongLong(long long i) { return 6; } int Foo::TakeAFloat(float i) { return 7; } int Foo::TakeADouble(double i) { return 8; } int Foo::TakeAString(char *i) { return 9; } int Foo::TakeAnArray(int i[]) { return 10; } int Foo::TakeAPointer(void *i) { return 11; } int Foo::TakeABoolPointer(bool *i) { return 12; } int Foo::TakeACharPointer(char *i) { return 13; } int Foo::TakeAShortPointer(short *i) { return 14; } int Foo::TakeAnIntPointer(int *i) { return 15; } int Foo::TakeALongPointer(long *i) { return 16; } int Foo::TakeALongLongPointer(long long *i) { return 17; } int Foo::TakeAFloatPointer(float *i) { return 18; } int Foo::TakeADoublePointer(double *i) { return 19; } int Foo::TakeAUInt(unsigned int i) { return 20; } int Foo::TakeAUShort(unsigned short i) { return 21; } int Foo::TakeAUChar(unsigned char i) { return 22; } int Foo::TakeAInt64(long long i) { return 23; } int Foo::TakeAULongLong(unsigned long long i) { return 24; } int Foo::TakeAUInt64(unsigned long long i) { return 25; }