Hi everyone,
Using the Makefile technique, I was able to build my .lib library:
> To see what I am speaking about you need to find
>
> 1. "Microsoft Studio .NET command prompt" icon
> 2. "Click" that icon to get the famous "MS DOS black Window"
> 3. At this point you should be able to invoke the MVC++ compiler "by
>hand"
>
>
...etc.
Unfortunately, now I am trying to link my .dll, which uses the classes
from the .lib and I get a fatal error that the .lib is "invalid or
corrupt". I think it is because I don't quite understand the
difference between a .dll and a .lib in Windows, and I'm making a single
file that is a little bit of both...
At risk of wearing out people's patience, I include below the
Makefile.win32 I'm using. Perhaps a quick look from experienced eyes
will reveal my mistakes.
- John
--
ObjSuf = obj
SrcSuf = cpp
ExeSuf = .exe
DllSuf = lib
OutPutOpt = -out:
# Win32 system with Microsoft Visual C/C++
!include <win32.mak>
CC = $(cc)
CPP = $(cc)
CPPFLAGS = $(cvarsdll) -EHsc -nologo -G5 -GR -MD -DWIN32 \
-DVISUAL_CPLUSPLUS -D_WINDOWS -I$(ROOTSYS)/include
CPPOPT = -O2
#CPPOPT = -Z7
LD = $(link)
LDOPT = -opt:ref
#LDOPT = -debug
LDFLAGS = $(LDOPT) $(conlflags) -nologo
SOFLAGS = $(dlllflags:-pdb:none=)
ROOTLIBS = $(ROOTSYS)/lib/libCore.lib \
$(ROOTSYS)/lib/libCint.lib $(ROOTSYS)/lib/libMatrix.lib
LIBS = $(ROOTLIBS) $(guilibsdll) MSVCPRT.LIB
LIBSALL = $(ROOTLIBS)
#------------------------------------------------------------------------------
# Environmental variable definitions
ARRAYO = TArrayQ.$(ObjSuf) TArrayQCint.$(ObjSuf)
MATRIXO = TMatrixQ.$(ObjSuf) TMatrixQCint.$(ObjSuf)
MATRIXUO = TMatrixQUtils.$(ObjSuf) TMatrixQUtilsCint.$(ObjSuf)
VECQO = TVectorQ.$(ObjSuf) TVectorQCint.$(ObjSuf)
# *shared* library
KLIBO = libKrane_root.$(DllSuf)
ARRAYS = TArrayQ.$(SrcSuf)
MATRIXS = TMatrixQ.$(SrcSuf)
MATRIXUS = TMatrixQUtils.$(SrcSuf)
VECQS = TVectorQ.$(SrcSuf)
OBJS = $(VECQO) $(MATRIXO) $(MATRIXUO) $(ARRAYO)
#------------------------------------------------------------------------------
# "Rules to make targets", specified with colon
all: $(KLIBO)
OBJS : $(OBJS)
# Rule for library
$(KLIBO) : $(OBJS)
BINDEXPLIB $* $(OBJS) > $*.def
lib -nologo -MACHINE:IX86 $(OBJS) -def:$*.def $(OutPutOpt)$(KLIBO)
$(LD) $(SOFLAGS) $(LDFLAGS) $(OBJS) $*.exp $(LIBS) $(OutPutOpt)$(KLIBO)
@echo "$@ done"
clean:
@rm -f $(OBJS) core *Cint*
superclean:
@rm -f $(OBJS) core *Cint* *~
.SUFFIXES: .$(SrcSuf)
#------------------------------------------------------------------------------
### Build the Dictionary files
TArrayQCint.$(SrcSuf): TArrayQ.h TArrayQLinkDef.h
@echo "Generating dictionary $@..."
@$(ROOTSYS)\bin\rootcint -f TArrayQCint.$(SrcSuf) -c TArrayQ.h TArrayQLinkDef.h
TMatrixQCint.$(SrcSuf): TMatrixQ.h TMatrixQLinkDef.h
@echo "Generating dictionary $@..."
@$(ROOTSYS)\bin\rootcint -f TMatrixQCint.$(SrcSuf) -c TMatrixQ.h TMatrixQLinkDef.h
TMatrixQUtilsCint.$(SrcSuf): TMatrixQUtils.h TMatrixQUtilsLinkDef.h
@echo "Generating dictionary $@..."
@$(ROOTSYS)\bin\rootcint -f TMatrixCUtilsCint.$(SrcSuf) -c TMatrixUtilsQ.h TMatrixQUtilsLinkDef.h
TVectorQCint.$(SrcSuf): TVectorQ.h TVectorQLinkDef.h
@echo "Generating dictionary $@..."
@$(ROOTSYS)\bin\rootcint -f TVectorQCint.$(SrcSuf) -c TVectorQ.h TVectorQLinkDef.h
#DEBUG := $(shell echo ROOTLIBS is --$(ROOTLIBS)-- 1>&2)
.$(SrcSuf).$(ObjSuf):
$(CXX) $(CXXFLAGS) -c $<
This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:07 MET