On Thu, 28 Sep 2000, Jiho Hahm wrote:
> [omitted previous messages]
>
> Yep, by defining MODPERL_EXPORTS in every .c file that gets compiled into mod_perl,
> those .c files will see the MODPERL_API_EXPORT functions as exports (being exported
> from the binary that the source file will end up in), and all other files that
> include mod_perl.h will see the functions as external functions to be imported from
> another DLL.
jiho, (cc-ing [EMAIL PROTECTED], where we should keep this discussion)
below is the version of your patch which i almost applied, but as randy
kobes explained to me (and was discussed on this list, but i didn't
listen close enough :), this can already taken care of by
including ApacheModulePerl.def, which is part of the current mod_perl cvs
tree.
Index: src/modules/ApacheModulePerl/ApacheModulePerl.dsp
===================================================================
RCS file: /home/cvs/modperl/src/modules/ApacheModulePerl/ApacheModulePerl.dsp,v
retrieving revision 1.7
diff -u -r1.7 ApacheModulePerl.dsp
--- src/modules/ApacheModulePerl/ApacheModulePerl.dsp 2000/09/13 06:06:43 1.7
+++ src/modules/ApacheModulePerl/ApacheModulePerl.dsp 2000/09/28 21:26:23
@@ -68,7 +68,7 @@
# PROP Intermediate_Dir "Debug"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS"
/YX /FD /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINSOCK2API_"
/D "_MSWSOCK_" /D "_WINDOWS" /FR /YX /FD /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINSOCK2API_"
+/D "_MSWSOCK_" /D "_WINDOWS" /FR /YX /FD /c
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32
# ADD BASE RSC /l 0x409 /d "_DEBUG"
Index: src/modules/perl/Apache.xs
===================================================================
RCS file: /home/cvs/modperl/src/modules/perl/Apache.xs,v
retrieving revision 1.114
diff -u -r1.114 Apache.xs
--- src/modules/perl/Apache.xs 2000/09/28 19:28:33 1.114
+++ src/modules/perl/Apache.xs 2000/09/28 21:26:24
@@ -47,6 +47,7 @@
* ====================================================================
*/
+#define MODPERL_EXPORTS
#define CORE_PRIVATE
#include "mod_perl.h"
#include "mod_perl_xs.h"
Index: src/modules/perl/Connection.xs
===================================================================
RCS file: /home/cvs/modperl/src/modules/perl/Connection.xs,v
retrieving revision 1.9
diff -u -r1.9 Connection.xs
--- src/modules/perl/Connection.xs 2000/04/11 16:38:27 1.9
+++ src/modules/perl/Connection.xs 2000/09/28 21:26:24
@@ -1,3 +1,4 @@
+#define MODPERL_EXPORTS
#define CORE_PRIVATE
#include "mod_perl.h"
Index: src/modules/perl/Constants.xs
===================================================================
RCS file: /home/cvs/modperl/src/modules/perl/Constants.xs,v
retrieving revision 1.20
diff -u -r1.20 Constants.xs
--- src/modules/perl/Constants.xs 2000/03/30 00:44:40 1.20
+++ src/modules/perl/Constants.xs 2000/09/28 21:26:24
@@ -1,3 +1,4 @@
+#define MODPERL_EXPORTS
#define CORE_PRIVATE
#include "mod_perl.h"
Index: src/modules/perl/File.xs
===================================================================
RCS file: /home/cvs/modperl/src/modules/perl/File.xs,v
retrieving revision 1.9
diff -u -r1.9 File.xs
--- src/modules/perl/File.xs 1999/06/04 17:50:46 1.9
+++ src/modules/perl/File.xs 2000/09/28 21:26:25
@@ -1,4 +1,4 @@
-
+#define MODPERL_EXPORTS
#include "mod_perl.h"
#define ap_fopen(r, name, mode) \
Index: src/modules/perl/Log.xs
===================================================================
RCS file: /home/cvs/modperl/src/modules/perl/Log.xs,v
retrieving revision 1.11
diff -u -r1.11 Log.xs
--- src/modules/perl/Log.xs 2000/03/31 17:07:24 1.11
+++ src/modules/perl/Log.xs 2000/09/28 21:26:25
@@ -1,3 +1,4 @@
+#define MODPERL_EXPORTS
#include "mod_perl.h"
#if MODULE_MAGIC_NUMBER >= MMN_132
Index: src/modules/perl/Server.xs
===================================================================
RCS file: /home/cvs/modperl/src/modules/perl/Server.xs,v
retrieving revision 1.7
diff -u -r1.7 Server.xs
--- src/modules/perl/Server.xs 2000/09/26 17:34:32 1.7
+++ src/modules/perl/Server.xs 2000/09/28 21:26:25
@@ -1,3 +1,4 @@
+#define MODPERL_EXPORTS
#define CORE_PRIVATE
#include "mod_perl.h"
Index: src/modules/perl/Table.xs
===================================================================
RCS file: /home/cvs/modperl/src/modules/perl/Table.xs,v
retrieving revision 1.10
diff -u -r1.10 Table.xs
--- src/modules/perl/Table.xs 2000/05/23 15:56:12 1.10
+++ src/modules/perl/Table.xs 2000/09/28 21:26:25
@@ -1,3 +1,4 @@
+#define MODPERL_EXPORTS
#include "mod_perl.h"
typedef struct {
Index: src/modules/perl/URI.xs
===================================================================
RCS file: /home/cvs/modperl/src/modules/perl/URI.xs,v
retrieving revision 1.6
diff -u -r1.6 URI.xs
--- src/modules/perl/URI.xs 2000/04/10 14:07:07 1.6
+++ src/modules/perl/URI.xs 2000/09/28 21:26:26
@@ -1,3 +1,4 @@
+#define MODPERL_EXPORTS
#include "mod_perl.h"
#include "mod_perl_xs.h"
Index: src/modules/perl/Util.xs
===================================================================
RCS file: /home/cvs/modperl/src/modules/perl/Util.xs,v
retrieving revision 1.9
diff -u -r1.9 Util.xs
--- src/modules/perl/Util.xs 2000/03/04 20:55:47 1.9
+++ src/modules/perl/Util.xs 2000/09/28 21:26:26
@@ -1,3 +1,4 @@
+#define MODPERL_EXPORTS
#include "mod_perl.h"
#include "util_date.h"
Index: src/modules/perl/mod_perl.c
===================================================================
RCS file: /home/cvs/modperl/src/modules/perl/mod_perl.c,v
retrieving revision 1.129
diff -u -r1.129 mod_perl.c
--- src/modules/perl/mod_perl.c 2000/09/27 16:13:28 1.129
+++ src/modules/perl/mod_perl.c 2000/09/28 21:26:35
@@ -54,6 +54,7 @@
* And so it was done...
*/
+#define MODPERL_EXPORTS
#define CORE_PRIVATE
#include "mod_perl.h"
@@ -1697,7 +1698,7 @@
return status;
}
-request_rec *perl_request_rec(request_rec *r)
+MODPERL_API_EXPORT(request_rec *) perl_request_rec(request_rec *r)
{
if(r != NULL) {
mp_request_rec = (IV)r;
Index: src/modules/perl/mod_perl.h
===================================================================
RCS file: /home/cvs/modperl/src/modules/perl/mod_perl.h,v
retrieving revision 1.104
diff -u -r1.104 mod_perl.h
--- src/modules/perl/mod_perl.h 2000/09/27 23:51:34 1.104
+++ src/modules/perl/mod_perl.h 2000/09/28 21:26:46
@@ -71,6 +71,16 @@
#define SHARED_MODULE
#endif
+#ifdef WIN32
+# ifdef MODPERL_EXPORTS
+# define MODPERL_API_EXPORT(type) __declspec(dllexport) type __stdcall
+# else
+# define MODPERL_API_EXPORT(type) __declspec(dllimport) type __stdcall
+# endif
+#else
+# define MODPERL_API_EXPORT(type) type
+#endif
+
#ifdef PERL_THREADS
#define _INCLUDE_APACHE_FIRST
#endif
@@ -1093,6 +1103,10 @@
void xs_init (void);
#endif
+#ifdef __cplusplus
+extern "C" {
+#endif
+
/* mod_perl.c */
/* generic handler stuff */
@@ -1128,7 +1142,7 @@
/* per-request gunk */
int mod_perl_sent_header(request_rec *r, int val);
int mod_perl_seqno(SV *self, int inc);
-request_rec *perl_request_rec(request_rec *);
+MODPERL_API_EXPORT(request_rec *) perl_request_rec(request_rec *);
void perl_setup_env(request_rec *r);
SV *perl_bless_request_rec(request_rec *);
void perl_set_request_rec(request_rec *);
@@ -1149,7 +1163,7 @@
void mod_perl_untaint(SV *sv);
SV *mod_perl_gensym (char *pack);
SV *mod_perl_slurp_filename(request_rec *r);
-SV *mod_perl_tie_table(table *t);
+MODPERL_API_EXPORT(SV *) mod_perl_tie_table(table *t);
SV *perl_hvrv_magic_obj(SV *rv);
void perl_tie_hash(HV *hv, char *pclass, SV *sv);
void perl_util_cleanup(void);
@@ -1270,7 +1284,7 @@
pool *perl_get_util_pool(void);
pool *perl_get_startup_pool(void);
server_rec *perl_get_startup_server(void);
-request_rec *sv2request_rec(SV *in, char *pclass, CV *cv);
+MODPERL_API_EXPORT(request_rec *) sv2request_rec(SV *in, char *pclass, CV *cv);
/* PerlRunXS.xs */
#define ApachePerlRun_name_with_virtualhost() \
@@ -1282,6 +1296,10 @@
#define dOPMask \
if(!op_mask) Newz(0, op_mask, maxo, char); \
else Zero(op_mask, maxo, char)
+
+#ifdef __cplusplus
+}
+#endif
#ifdef PERL_SAFE_STARTUP
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]