diff options
Diffstat (limited to 'Examples/test-suite/extern_declaration.i')
| -rw-r--r-- | Examples/test-suite/extern_declaration.i | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/Examples/test-suite/extern_declaration.i b/Examples/test-suite/extern_declaration.i new file mode 100644 index 0000000..eca97b5 --- /dev/null +++ b/Examples/test-suite/extern_declaration.i @@ -0,0 +1,31 @@ +%module extern_declaration + +// Test different calling conventions on Windows. Old versions of SWIG generated +// an incorrect extern declaration that wouldn't compile with Windows compilers. +#define SWIGEXPORT +#define SWIGSTDCALL +#define MYDLLIMPORT + +%{ +#if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) +# define MYDLLIMPORT __declspec(dllimport) +#else +# define MYDLLIMPORT +#endif +%} + +MYDLLIMPORT extern int externimport(int i); +SWIGEXPORT extern int externexport(int); +extern int SWIGSTDCALL externstdcall(int); + +%{ +/* + externimport ought to be using MYDLLIMPORT and compiled into another dll, but that is + a bit tricky to do in the test framework +*/ +SWIGEXPORT extern int externimport(int i) { return i; } +SWIGEXPORT extern int externexport(int i) { return i; } +extern int SWIGSTDCALL externstdcall(int i) { return i; } +%} + + |
