Thong.Nhan-US@banctec.com writes:
>      I made other tests and it seem to me that there the linkage type
>      between the gcc and icc (IBM) compilers are inconsistent.

The following patch should fix this problem by marking the linkage
type of exported functions in perl.dll.

It should apply to any recent perl (I would think 5.004_70+).

Enjoy,
Ilya

--- ./proto.h~	Sun Jul 26 01:15:42 1998
+++ ./proto.h	Sun Jul 26 19:28:53 1998
@@ -1,7 +1,11 @@
+#ifndef PERL_CALLCONV
+#  define PERL_CALLCONV
+#endif 
+
 #ifdef PERL_OBJECT
-#define VIRTUAL virtual
+#define VIRTUAL virtual PERL_CALLCONV
 #else
-#define VIRTUAL
+#define VIRTUAL PERL_CALLCONV
 START_EXTERN_C
 #endif
 
--- ./os2/os2ish.h~~	Mon Jul 20 04:20:09 1998
+++ ./os2/os2ish.h	Sun Jul 26 19:36:17 1998
@@ -169,11 +169,16 @@ void Perl_OS2_init(char **);
 
 /* XXX This code hideously puts env inside: */
 
-#define PERL_SYS_INIT(argcp, argvp) STMT_START {	\
+#ifdef __EMX__
+#  define PERL_SYS_INIT(argcp, argvp) STMT_START {	\
     _response(argcp, argvp);			\
     _wildcard(argcp, argvp);			\
     Perl_OS2_init(env);	} STMT_END
-
+#else  /* Compiling embedded Perl with non-EMX compiler */
+#  define PERL_SYS_INIT(argcp, argvp) STMT_START {	\
+    Perl_OS2_init(env);	} STMT_END
+#define PERL_CALLCONV _System
+#endif
 #define PERL_SYS_TERM()		MALLOC_TERM
 
 /* #define PERL_SYS_TERM() STMT_START {	\
