Hello, Thank you for your help. I understand what you are trying to tell me. I understand why I cant regcomp the lib file from connectivity module. Now can you please tell me what is wrong in my map file and makefile.
==================== makefile.mk================================================ PRJ=..$/..$/.. PRJINC=..$/.. PRJNAME=connectivity TARGET=DriverSkeleton ENABLE_EXCEPTIONS=TRUE VISIBILITY_HIDDEN=TRUE # --- Settings ---------------------------------- .IF "$(DBGUTIL_OJ)"!="" ENVCFLAGS+=/FR$(SLO)$/ .ENDIF .INCLUDE : $(PRJ)$/makefile.pmk .INCLUDE : $(PRJ)$/version.mk # --- Files ------------------------------------- SLOFILES=\ $(SLO)$/SResultSet.obj \ $(SLO)$/SStatement.obj \ $(SLO)$/SPreparedStatement.obj \ $(SLO)$/SDatabaseMetaData.obj \ $(SLO)$/SConnection.obj \ $(SLO)$/SServices.obj \ $(SLO)$/SResultSetMetaData.obj \ $(SLO)$/SDriver.obj SHL1VERSIONMAP= $(TARGET).map # --- Library ----------------------------------- SHL1TARGET=$(TARGET)$(DLLPOSTFIX) SHL1OBJS=$(SLOFILES) SHL1STDLIBS=\ $(CPPULIB) \ $(CPPUHELPERLIB) \ $(TOOLSLIB) \ $(SALLIB) \ $(DBTOOLSLIB) \ $(COMPHELPERLIB) SHL1DEPN= SHL1IMPLIB= i$(TARGET) SHL1DEF= $(MISC)$/$(SHL1TARGET).def DEF1NAME= $(SHL1TARGET) DEF1EXPORTFILE= exports.dxp # --- Targets ---------------------------------- .INCLUDE : $(PRJ)$/target.pmk ================================================================================== Also my .map file is, =========================DriverSkeleton.map========================================= DRIVERSKELETON_2_0 { global: component_getImplementationEnvironment; component_writeInfo; component_getFactory; local: *; }; ================================================================================== And exports.dxp is, ==========================exports.dxp============================================== component_getImplementationEnvironment component_writeInfo component_getFactory ================================================================================== All above files are under " connectivity/source/drivers/DriverSkeleton " this path. Are above files are correct and if so what goes wrong ? Also, can you tell me what is the use of SServices.cxx file ? And what should I write below " SHL1STDLIBS=\ " this in makefile.mk ? Regards, Rohit 2011/4/4 Frank Schönheit <frank.schoenh...@oracle.com> > Hi Rohit, > > > I am trying to register the library (.so) file for the example skeleton > > sdbc driver using "regcomp" tool into the services.rdb file. When I try > > to register the shared library in "connection/unxlngi6.pro/lib > > I suppose you mean "connectivity/unxlngi6.pro/lib" here, i.e. the local > output tree of the "connectivity" module? > > > <http://unxlngi6.pro/lib>" directory it fails giving > > "CannotRegisterImplementationException" exception. > > > > However during the build process this library is copied into > > 'solver//330/unxlngi6.pro <http://unxlngi6.pro>" directory and when I > > try to register this file it succeeds ! > > > > Could anyone tell me what changes happen to the library files during > > build process when they are copied into the solver directory? > > I suppose this is a LD_LIBRARY_PATH problem: your library is probably > linked against other libraries from URE (the UNO runtime environment), > which, in a complete build, also reside in $SOLVER/330/unxlngi6.pro/lib. > So, if your library resides there, too, and your LD_LIBRARY_PATH > contains ".", then loading the lib succeeds. Loading the lib in the > local output tree doesn't succeed, since the loader doesn't find the URE > libs there. > > To verify this, try "ldd <lib_name>" to see which libs your actual lib > needs, and whether the loader finds them. > > > My problem is that the my sdbc driver library is supposed to implement > > com.sun.star.sdbc.Driver service but when I register it from solver it > > is implementing some strange services like > > "com.sun.star.comp.svl.PathService" and > > "com.sun.star.uno.util.numbers.SvNumberFormatterServiceObject" hence I > > am wondering if something is changing the library during the build > process. > > This means that you don't export the proper symbols from your library, > which most probably means your map file is wrong. Look into an other > driver's makefile.mk, search for a directive referring to a file > component.map, and copy this for your driver. > > Background: since your driver doesn't export the necessary "component_*" > functions, which are looked by by the UNO component registration > process, those functions are taken from another (random) library which > your actual library links to. And those other functions, in your case > obviously originating from the libsvl* library, write their very UNO > component information. > > Note that what you're doing is a component with so-called active > registration, which is deprecated. Passive registration is to be > preferred nowadays, it means that instead of adding (active) code to > your library which describes the UNO components it exports, you place an > XML file near your lib, and describe the components therein. See > http://wiki.services.openoffice.org/wiki/Passive_Component_Registration > for details. > > This completely avoids the regcomp stuff, though at the moment, I am not > sure how to integrate those passive registration into the > build/deployment process. I think you can learn from other modules here, > too - VCL comes to mind, look into vcl/util/vcl.component, and how it is > used. > > HTH > > Ciao > Frank > -- > ----------------------------------------------------------------- > To unsubscribe send email to dev-unsubscr...@dba.openoffice.org > For additional commands send email to sy...@dba.openoffice.org > with Subject: help > -- ----------------------------------------------------------------- To unsubscribe send email to dev-unsubscr...@dba.openoffice.org For additional commands send email to sy...@dba.openoffice.org with Subject: help