Mailing-List: contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT sources DOT redhat DOT com Delivered-To: mailing list cygwin AT sources DOT redhat DOT com Message-ID: <001701c04561$2484c880$3dbcfea9@mitsu5> From: "Mitsuo Igarashi" To: Subject: How to make an extension of Python Date: Fri, 3 Nov 2000 15:41:13 +0900 MIME-Version: 1.0 Content-Type: text/plain; charset="shift_jis" Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 4.72.3110.5 X-MIMEOLE: Produced By Microsoft MimeOLE V4.72.3110.3 This is a question.of a newbie. I am trying to make an extension of Python-2.0 in Cygwin 1.1.4 on Windows98 for my trainig. As a sample of the extension, I am borrowing a file "environ.c" from the book "Programming Python by Mark Lutz published by O'Reilly & Associates, Inc" in page 54. To create an extension, I follow the example of "DllHelpers-0.25 by Mumit Khan". Among the files of the DllHelpers-0.25, I use cdll.h, dllinit.c and Makefile in addition to "environ.c (renamed as myEnviron.c)". The Makefile is changed as follows. Created myEnviron.pyd is imported in Python.Then I get the message: "Importerror: dynamic modules doese not define init function ( initmyEnviron)". I try another comiling way. I make a def file manually "EXPORTS initmyEnviron". Wth the already formed myEnviron.o, I compile as follows: dllwrap -o myEnviron.pyd -def myEnviron.def myEnviron.o -lpython2.0 I get the same error message. Anyone, please teach me how to manage. The changed Makefile(DllHelpers-0.25 by Mumit Khan)::::: # # Makefile for Cygwin. # CC = gcc CXX = c++ DEBUG = -g -Wall #-O2 CXXFLAGS = $(DEBUG) CFLAGS = $(DEBUG) CPPFLAGS = -I/usr/local/include/python2.0 AS = as DLLTOOL = dlltool DLLWRAP = dllwrap #exeext = .exe # # Various targets to build. # DLL_NAME = myEnviron.pyd DLL_EXP_LIB = libmyEnviron.a DLL_EXP_DEF = myEnviron.def #TESTPROGS = usedll$(exeext) all: $(DLL_NAME) $(TESTPROGS) # # sources, objects, etc. # SRCS = $(wildcard *.cc *.c) OBJS = $(SRCS:.cc=.o) OBJS := $(OBJS:.c=.o) # # DLL related variables. These are used when building the DLL. See later. # # Must define BUILDING_DLL when building the DLL. Otherwise import/exports # will not work correctly. See dllclass.h for more info. DLL_CFLAGS = -DBUILDING_DLL=1 # The default entry point defined by dllwrap; the default user callback # is DllMain, and there is stub in dllinit.c. DLL_LDFLAGS = # any extra libraries that your DLL may depend on. DLL_LDLIBS = libpython2.0.a DLL_SRCS = myEnviron.c dllinit.c DLL_OBJS = $(DLL_SRCS:.cc=.o) DLL_OBJS := $(DLL_OBJS:.c=.o) ### # # Making DLL # ### # # Note that we let dllwrap create both the DEF and IMPORT library in # one shot. No need to run dlltool anymore. # DLLWRAP_FLAGS = --export-all --output-def $(DLL_EXP_DEF) \ --implib $(DLL_EXP_LIB) \ --driver-name $(CC) $(DLL_NAME) $(DLL_EXP_DEF) $(DLL_EXP_LIB): $(DLL_OBJS) $(DLLWRAP) $(DLLWRAP_FLAGS) -o $(DLL_NAME) \ $(DLL_OBJS) $(DLL_LDFLAGS) $(DLL_LDLIBS) # # dependencies. # $(OBJS): cdll.h myEnviron.o: myEnviron.c dllinit.o: dllinit.c #usedll.o: usedll.c # # default rules for building DLL objects. Note that client programs (ie., # the ones that *use* the DLL) have to be compiled without the DLL_CFLAGS # flags. # .cc.o: $(CXX) -c $(DLL_CFLAGS) $(CPPFLAGS) $(CXXFLAGS) -o $@ $< .c.o: $(CC) -c $(DLL_CFLAGS) $(CPPFLAGS) $(CFLAGS) -o $@ $< ----------=========--------- Mitsuo Igarashi mitsu5 AT ruby DOT famille DOT ne DOT jp -- Want to unsubscribe from this list? Send a message to cygwin-unsubscribe AT sourceware DOT cygnus DOT com