Performance/Implement Merger Dynamic Library

From Apache OpenOffice Wiki
Jump to: navigation, search

Something about merger dynamic library please view Merge_UNO_Dlls and Performance/Ideas/Easy_UNO_Services_Merging.

I will disucss the complete process here(exclude UNO runtime libraries).

Analyze the loading libraries

"B" is library's name.

"I" is module name.

OOo base starting load libraries

basegfxmi.dll      
behelper.uno.dll  configmgr
comphelp4MSC.dll   
configmgr2.uno.dll  configmgr
dnd.dll  dtrans           
fsstorage.uno.dll  svtools  
fwemi.dll          
fwimi.dll          
fwkmi.dll  framework         
fwlmi.dll  framework               
i18nisolang1MSC.dll
i18npool.uno.dll  i18npool  
i18nutilMSC.dll    
icudt40.dll        
icuin40.dll        
icuuc40.dll        
jmi_g.dll          
lngmi.dll          
localebe1.uno.dll  shell  
package2.dll  package
sax.uno.dll  sax
saxmi.dll          
sbmi.dll           
sfxmi.dll          
sofficeapp.dll     
sotmi.dll          
splmi.dll          
svlmi.dll          
svtmi.dll          
sysmgr1.uno.dll    
tkmi.dll           
tlmi.dll           
ucb1.dll           
ucbhelper4MSC.dll  
ucpfile1.dll  ucb
utlmi.dll          
vclmi.dll          
vos3MSC.dll        
xcrmi.dll          
xomi.dll

Write/Calc/Impress starting load libraries

fileacc.dll
filterconfig1.dll
ftransl.dll
guesslangmi.dll
ldapbe2.uno.dll
mcnttype.dll
sysdtrans.dll 
ucpexpand1.uno.dll
unoxmlmi.dll
uuimi.dll
xstor.dll

Write/Calc/Impress starting load libraries

evtatt.dll
frmmi.dll
hyphenmi.dll
lnthmi.dll
spellmi.dll
xmlsecurity.dll

Rewrite the uno export method

I will behelper.uno.dll as example.

Implement new method

As we know, This library's UNO method is define in "configmgr/source/backendhelper/componentdf.cxx".

Now we will copy that file to a new file "configmgr/source/backendhelper/componentdf_merger.cxx". And update the uno methods name like this(Performance/Ideas/Easy_UNO_Services_Merging):

component_getImplementationEnvironment_behelper
component_writeInfo_behelper
component_getFactory_behelper

Compile new lib file

Now we can update the "configmgr/source/backendhelper/makefile.mk", and compile the "behelper_merger.lib" file. Add these content into this file.

LIB2TARGET=$(SLB)$/behelper_merger.lib        
LIB2OBJFILES=\
       $(SLO)$/backendlayerhelper.obj \
       $(SLO)$/componentdf_merger.obj

Deliver merger lib to solver dir

Update the "configmgr/prj/d.lst", add these content into this file

mkdir: %_DEST%\slb%_EXT%\base_merger
..\%__SRC%\slb\configmgr.lib %_DEST%\slb%_EXT%\base_merger\behelper_merger.lib
..\%__SRC%\slb\configmgr.lin %_DEST%\slb%_EXT%\base_merger\behelper_merger.lin

Now dealing with a dynamic library of the complete process has been completed.

Merger liberary uno method implement

We will implement these process in "postprocess" module.

"merger" folder

Create new "postprocess/merger" folder, and add these content to "postprocess/prj/build.lst".

+po postprocess\merger nmake - all po_merger NULL
-po postprocess\checkxml nmake - all po_checkxml NULL
+po postprocess\checkxml nmake - all po_checkxml po_merger NULL

"merger_XXX.cxx" file

Create new "postprocess/merger/merger_base.cxx" file. And this file will be:

#include <cppuhelper/factory.hxx>                                                                     
 
#define DECLARE_UNO_API( model ) \                                                                      
void component_getImplementationEnvironment_##model	\                                                
(const sal_Char	**, uno_Environment);	\                                                            
sal_Bool component_writeInfo_##model	\                                                                
(void *, void *);	\                                                                                    
void* component_getFactory_##model	\                                                                    
(const sal_Char*, void *, void *);
//  
#define CALL_UNO_API_WRITER_INFO(model ) \                                                              
	if( !component_writeInfo_##model( pServiceManager, 	pRegistryKey) )	\                                
	{	return sal_False;		}                                                                        
//
#define CALL_UNO_API_GET_FACTORY(model ) \                                                              
	if( NULL != (pFactory = component_getFactory_##model( pImplName, pServiceManager, pRegistryKey)) )	\
	{	return pFactory;		}                                                                        
//
rtl_StandardModuleCount g_moduleCount = MODULE_COUNT_INIT;                                              
 
DECLARE_UNO_API( behelper ); 
 
extern "C"                                                                                              
{                                                                                                       
void SAL_CALL component_getImplementationEnvironment(                                                   
	const sal_Char ** ppEnvTypeName, uno_Environment ** )                                                
{                                                                                                       
	*ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME;                                                 
}
sal_Bool SAL_CALL component_writeInfo( void * pServiceManager, void * pRegistryKey )                    
{                                                                                                       
	CALL_UNO_API_WRITER_INFO( behelper );                                                                
	return sal_True;                                                                                     
}
void * SAL_CALL component_getFactory                                                                    
(const sal_Char * pImplName, void * pServiceManager, void * pRegistryKey)                               
{                                                                                                       
	void * pFactory = NULL;                                                                              
	CALL_UNO_API_GET_FACTORY( behelper );                                                                
	return pFactory;                                                                                     
}                                                                                                       
 
}

"makefile.mk" file

Create new "postprocess/merger/makefile.mk" file. and this file will be

Invalid language.

You need to specify a language like this: <source lang="html4strict">...</source>

Supported languages for syntax highlighting:

4cs, 6502acme, 6502kickass, 6502tasm, 68000devpac, abap, actionscript, actionscript3, ada, algol68, apache, applescript, apt_sources, arm, asm, asp, asymptote, autoconf, autohotkey, autoit, avisynth, awk, bascomavr, bash, basic4gl, bf, bibtex, blitzbasic, bnf, boo, c, c_loadrunner, c_mac, caddcl, cadlisp, cfdg, cfm, chaiscript, cil, clojure, cmake, cobol, coffeescript, cpp, cpp-qt, csharp, css, cuesheet, d, dcl, dcpu16, dcs, delphi, diff, div, dos, dot, e, ecmascript, eiffel, email, epc, erlang, euphoria, f1, falcon, fo, fortran, freebasic, freeswitch, fsharp, gambas, gdb, genero, genie, gettext, glsl, gml, gnuplot, go, groovy, gwbasic, haskell, haxe, hicest, hq9plus, html4strict, html5, icon, idl, ini, inno, intercal, io, j, java, java5, javascript, jquery, kixtart, klonec, klonecpp, latex, lb, ldif, lisp, llvm, locobasic, logtalk, lolcode, lotusformulas, lotusscript, lscript, lsl2, lua, m68k, magiksf, make, mapbasic, matlab, mirc, mmix, modula2, modula3, mpasm, mxml, mysql, nagios, netrexx, newlisp, nsis, oberon2, objc, objeck, ocaml, ocaml-brief, octave, oobas, oorexx, oracle11, oracle8, oxygene, oz, parasail, parigp, pascal, pcre, per, perl, perl6, pf, php, php-brief, pic16, pike, pixelbender, pli, plsql, postgresql, povray, powerbuilder, powershell, proftpd, progress, prolog, properties, providex, purebasic, pycon, pys60, python, q, qbasic, rails, rebol, reg, rexx, robots, rpmspec, rsplus, ruby, sas, scala, scheme, scilab, sdlbasic, smalltalk, smarty, spark, sparql, sql, stonescript, systemverilog, tcl, teraterm, text, thinbasic, tsql, typoscript, unicon, upc, urbi, uscript, vala, vb, vbnet, vedit, verilog, vhdl, vim, visualfoxpro, visualprolog, whitespace, whois, winbatch, xbasic, xml, xorg_conf, xpp, yaml, z80, zxbasic


PRJ=..

PRJNAME=postprocess
TARGET=merger_base

.INCLUDE : settings.mk

# ------ merger_base.uno ------
SHL1TARGET=	merger_base.uno
SHL1OBJS=	\
	$(SLO)$/merger_base.obj


SHL1STDLIBS= \
        $(CPPUHELPERLIB) \
        $(CPPULIB) \
        $(SALLIB)


SHL1DEPN=
SHL1IMPLIB=	i$(TARGET)

SHL1LIBS=	\
	$(SOLARVER)$/$(INPATH)$/slb/base_merger/behelper_merger.lib 

SHL1DEF=	$(MISC)$/$(SHL1TARGET).def
DEF1NAME=	$(SHL1TARGET)
DEF1EXPORTFILE=	exports.dxp

"exports.dxp" file

Create new "postprocess/merger/exports.dxp" file. And this file will be:

Invalid language.

You need to specify a language like this: <source lang="html4strict">...</source>

Supported languages for syntax highlighting:

4cs, 6502acme, 6502kickass, 6502tasm, 68000devpac, abap, actionscript, actionscript3, ada, algol68, apache, applescript, apt_sources, arm, asm, asp, asymptote, autoconf, autohotkey, autoit, avisynth, awk, bascomavr, bash, basic4gl, bf, bibtex, blitzbasic, bnf, boo, c, c_loadrunner, c_mac, caddcl, cadlisp, cfdg, cfm, chaiscript, cil, clojure, cmake, cobol, coffeescript, cpp, cpp-qt, csharp, css, cuesheet, d, dcl, dcpu16, dcs, delphi, diff, div, dos, dot, e, ecmascript, eiffel, email, epc, erlang, euphoria, f1, falcon, fo, fortran, freebasic, freeswitch, fsharp, gambas, gdb, genero, genie, gettext, glsl, gml, gnuplot, go, groovy, gwbasic, haskell, haxe, hicest, hq9plus, html4strict, html5, icon, idl, ini, inno, intercal, io, j, java, java5, javascript, jquery, kixtart, klonec, klonecpp, latex, lb, ldif, lisp, llvm, locobasic, logtalk, lolcode, lotusformulas, lotusscript, lscript, lsl2, lua, m68k, magiksf, make, mapbasic, matlab, mirc, mmix, modula2, modula3, mpasm, mxml, mysql, nagios, netrexx, newlisp, nsis, oberon2, objc, objeck, ocaml, ocaml-brief, octave, oobas, oorexx, oracle11, oracle8, oxygene, oz, parasail, parigp, pascal, pcre, per, perl, perl6, pf, php, php-brief, pic16, pike, pixelbender, pli, plsql, postgresql, povray, powerbuilder, powershell, proftpd, progress, prolog, properties, providex, purebasic, pycon, pys60, python, q, qbasic, rails, rebol, reg, rexx, robots, rpmspec, rsplus, ruby, sas, scala, scheme, scilab, sdlbasic, smalltalk, smarty, spark, sparql, sql, stonescript, systemverilog, tcl, teraterm, text, thinbasic, tsql, typoscript, unicon, upc, urbi, uscript, vala, vb, vbnet, vedit, verilog, vhdl, vim, visualfoxpro, visualprolog, whitespace, whois, winbatch, xbasic, xml, xorg_conf, xpp, yaml, z80, zxbasic


component_getImplementationEnvironment
component_writeInfo
component_getFactory

Deliver

Deliver merger library to solver dir. Add this content to file "postprocess/prj/d.lst":

Invalid language.

You need to specify a language like this: <source lang="html4strict">...</source>

Supported languages for syntax highlighting:

4cs, 6502acme, 6502kickass, 6502tasm, 68000devpac, abap, actionscript, actionscript3, ada, algol68, apache, applescript, apt_sources, arm, asm, asp, asymptote, autoconf, autohotkey, autoit, avisynth, awk, bascomavr, bash, basic4gl, bf, bibtex, blitzbasic, bnf, boo, c, c_loadrunner, c_mac, caddcl, cadlisp, cfdg, cfm, chaiscript, cil, clojure, cmake, cobol, coffeescript, cpp, cpp-qt, csharp, css, cuesheet, d, dcl, dcpu16, dcs, delphi, diff, div, dos, dot, e, ecmascript, eiffel, email, epc, erlang, euphoria, f1, falcon, fo, fortran, freebasic, freeswitch, fsharp, gambas, gdb, genero, genie, gettext, glsl, gml, gnuplot, go, groovy, gwbasic, haskell, haxe, hicest, hq9plus, html4strict, html5, icon, idl, ini, inno, intercal, io, j, java, java5, javascript, jquery, kixtart, klonec, klonecpp, latex, lb, ldif, lisp, llvm, locobasic, logtalk, lolcode, lotusformulas, lotusscript, lscript, lsl2, lua, m68k, magiksf, make, mapbasic, matlab, mirc, mmix, modula2, modula3, mpasm, mxml, mysql, nagios, netrexx, newlisp, nsis, oberon2, objc, objeck, ocaml, ocaml-brief, octave, oobas, oorexx, oracle11, oracle8, oxygene, oz, parasail, parigp, pascal, pcre, per, perl, perl6, pf, php, php-brief, pic16, pike, pixelbender, pli, plsql, postgresql, povray, powerbuilder, powershell, proftpd, progress, prolog, properties, providex, purebasic, pycon, pys60, python, q, qbasic, rails, rebol, reg, rexx, robots, rpmspec, rsplus, ruby, sas, scala, scheme, scilab, sdlbasic, smalltalk, smarty, spark, sparql, sql, stonescript, systemverilog, tcl, teraterm, text, thinbasic, tsql, typoscript, unicon, upc, urbi, uscript, vala, vb, vbnet, vedit, verilog, vhdl, vim, visualfoxpro, visualprolog, whitespace, whois, winbatch, xbasic, xml, xorg_conf, xpp, yaml, z80, zxbasic


..\%__SRC%\bin\merger_base.uno.dll %_DEST%\bin%_EXT%\merger_base.uno.dll

Now we finished compile merger library process.

Update the packge script file

These process will be "scp2" module, has two types thing: One is add merger libraries to package, the other is that do not add mergered libraries to package. Clear the mergered libraries

update "scp2/source/ooo/file_library_ooo.scp":

Invalid language.

You need to specify a language like this: <source lang="html4strict">...</source>

Supported languages for syntax highlighting:

4cs, 6502acme, 6502kickass, 6502tasm, 68000devpac, abap, actionscript, actionscript3, ada, algol68, apache, applescript, apt_sources, arm, asm, asp, asymptote, autoconf, autohotkey, autoit, avisynth, awk, bascomavr, bash, basic4gl, bf, bibtex, blitzbasic, bnf, boo, c, c_loadrunner, c_mac, caddcl, cadlisp, cfdg, cfm, chaiscript, cil, clojure, cmake, cobol, coffeescript, cpp, cpp-qt, csharp, css, cuesheet, d, dcl, dcpu16, dcs, delphi, diff, div, dos, dot, e, ecmascript, eiffel, email, epc, erlang, euphoria, f1, falcon, fo, fortran, freebasic, freeswitch, fsharp, gambas, gdb, genero, genie, gettext, glsl, gml, gnuplot, go, groovy, gwbasic, haskell, haxe, hicest, hq9plus, html4strict, html5, icon, idl, ini, inno, intercal, io, j, java, java5, javascript, jquery, kixtart, klonec, klonecpp, latex, lb, ldif, lisp, llvm, locobasic, logtalk, lolcode, lotusformulas, lotusscript, lscript, lsl2, lua, m68k, magiksf, make, mapbasic, matlab, mirc, mmix, modula2, modula3, mpasm, mxml, mysql, nagios, netrexx, newlisp, nsis, oberon2, objc, objeck, ocaml, ocaml-brief, octave, oobas, oorexx, oracle11, oracle8, oxygene, oz, parasail, parigp, pascal, pcre, per, perl, perl6, pf, php, php-brief, pic16, pike, pixelbender, pli, plsql, postgresql, povray, powerbuilder, powershell, proftpd, progress, prolog, properties, providex, purebasic, pycon, pys60, python, q, qbasic, rails, rebol, reg, rexx, robots, rpmspec, rsplus, ruby, sas, scala, scheme, scilab, sdlbasic, smalltalk, smarty, spark, sparql, sql, stonescript, systemverilog, tcl, teraterm, text, thinbasic, tsql, typoscript, unicon, upc, urbi, uscript, vala, vb, vbnet, vedit, verilog, vhdl, vim, visualfoxpro, visualprolog, whitespace, whois, winbatch, xbasic, xml, xorg_conf, xpp, yaml, z80, zxbasic


-File gid_File_Lib_Behelper
-    TXT_FILE_BODY;
-    Styles = (PACKED,UNO_COMPONENT);
-    RegistryID = gid_Starregistry_Services_Rdb;
-    Dir = gid_Dir_Program;
-  #ifdef UNX
-    Name = STRING(CONCAT2(behelper.uno,UNXSUFFIX));
-  #else
-    Name = "behelper.uno.dll";
-  #endif
-End

update "scp2/source/ooo/module_hidden_ooo.scp":

Invalid language.

You need to specify a language like this: <source lang="html4strict">...</source>

Supported languages for syntax highlighting:

4cs, 6502acme, 6502kickass, 6502tasm, 68000devpac, abap, actionscript, actionscript3, ada, algol68, apache, applescript, apt_sources, arm, asm, asp, asymptote, autoconf, autohotkey, autoit, avisynth, awk, bascomavr, bash, basic4gl, bf, bibtex, blitzbasic, bnf, boo, c, c_loadrunner, c_mac, caddcl, cadlisp, cfdg, cfm, chaiscript, cil, clojure, cmake, cobol, coffeescript, cpp, cpp-qt, csharp, css, cuesheet, d, dcl, dcpu16, dcs, delphi, diff, div, dos, dot, e, ecmascript, eiffel, email, epc, erlang, euphoria, f1, falcon, fo, fortran, freebasic, freeswitch, fsharp, gambas, gdb, genero, genie, gettext, glsl, gml, gnuplot, go, groovy, gwbasic, haskell, haxe, hicest, hq9plus, html4strict, html5, icon, idl, ini, inno, intercal, io, j, java, java5, javascript, jquery, kixtart, klonec, klonecpp, latex, lb, ldif, lisp, llvm, locobasic, logtalk, lolcode, lotusformulas, lotusscript, lscript, lsl2, lua, m68k, magiksf, make, mapbasic, matlab, mirc, mmix, modula2, modula3, mpasm, mxml, mysql, nagios, netrexx, newlisp, nsis, oberon2, objc, objeck, ocaml, ocaml-brief, octave, oobas, oorexx, oracle11, oracle8, oxygene, oz, parasail, parigp, pascal, pcre, per, perl, perl6, pf, php, php-brief, pic16, pike, pixelbender, pli, plsql, postgresql, povray, powerbuilder, powershell, proftpd, progress, prolog, properties, providex, purebasic, pycon, pys60, python, q, qbasic, rails, rebol, reg, rexx, robots, rpmspec, rsplus, ruby, sas, scala, scheme, scilab, sdlbasic, smalltalk, smarty, spark, sparql, sql, stonescript, systemverilog, tcl, teraterm, text, thinbasic, tsql, typoscript, unicon, upc, urbi, uscript, vala, vb, vbnet, vedit, verilog, vhdl, vim, visualfoxpro, visualprolog, whitespace, whois, winbatch, xbasic, xml, xorg_conf, xpp, yaml, z80, zxbasic


-gid_File_Lib_Behelper,

Add the merger libraries

update "scp2/source/ooo/file_library_ooo.scp":

Invalid language.

You need to specify a language like this: <source lang="html4strict">...</source>

Supported languages for syntax highlighting:

4cs, 6502acme, 6502kickass, 6502tasm, 68000devpac, abap, actionscript, actionscript3, ada, algol68, apache, applescript, apt_sources, arm, asm, asp, asymptote, autoconf, autohotkey, autoit, avisynth, awk, bascomavr, bash, basic4gl, bf, bibtex, blitzbasic, bnf, boo, c, c_loadrunner, c_mac, caddcl, cadlisp, cfdg, cfm, chaiscript, cil, clojure, cmake, cobol, coffeescript, cpp, cpp-qt, csharp, css, cuesheet, d, dcl, dcpu16, dcs, delphi, diff, div, dos, dot, e, ecmascript, eiffel, email, epc, erlang, euphoria, f1, falcon, fo, fortran, freebasic, freeswitch, fsharp, gambas, gdb, genero, genie, gettext, glsl, gml, gnuplot, go, groovy, gwbasic, haskell, haxe, hicest, hq9plus, html4strict, html5, icon, idl, ini, inno, intercal, io, j, java, java5, javascript, jquery, kixtart, klonec, klonecpp, latex, lb, ldif, lisp, llvm, locobasic, logtalk, lolcode, lotusformulas, lotusscript, lscript, lsl2, lua, m68k, magiksf, make, mapbasic, matlab, mirc, mmix, modula2, modula3, mpasm, mxml, mysql, nagios, netrexx, newlisp, nsis, oberon2, objc, objeck, ocaml, ocaml-brief, octave, oobas, oorexx, oracle11, oracle8, oxygene, oz, parasail, parigp, pascal, pcre, per, perl, perl6, pf, php, php-brief, pic16, pike, pixelbender, pli, plsql, postgresql, povray, powerbuilder, powershell, proftpd, progress, prolog, properties, providex, purebasic, pycon, pys60, python, q, qbasic, rails, rebol, reg, rexx, robots, rpmspec, rsplus, ruby, sas, scala, scheme, scilab, sdlbasic, smalltalk, smarty, spark, sparql, sql, stonescript, systemverilog, tcl, teraterm, text, thinbasic, tsql, typoscript, unicon, upc, urbi, uscript, vala, vb, vbnet, vedit, verilog, vhdl, vim, visualfoxpro, visualprolog, whitespace, whois, winbatch, xbasic, xml, xorg_conf, xpp, yaml, z80, zxbasic


+File gid_File_Lib_Merger_base
+     TXT_FILE_BODY;
+     Styles = (PACKED,UNO_COMPONENT);
+     RegistryID = gid_Starregistry_Services_Rdb;
+     Dir = gid_Dir_Program;
+   #ifdef UNX
+    Name = STRING(CONCAT2(merger_base.uno,UNXSUFFIX));
+   #else
+    Name = "merger_base.uno.dll";
+   #endif
+ End

update "scp2/source/ooo/module_hidden_ooo.scp":

Invalid language.

You need to specify a language like this: <source lang="html4strict">...</source>

Supported languages for syntax highlighting:

4cs, 6502acme, 6502kickass, 6502tasm, 68000devpac, abap, actionscript, actionscript3, ada, algol68, apache, applescript, apt_sources, arm, asm, asp, asymptote, autoconf, autohotkey, autoit, avisynth, awk, bascomavr, bash, basic4gl, bf, bibtex, blitzbasic, bnf, boo, c, c_loadrunner, c_mac, caddcl, cadlisp, cfdg, cfm, chaiscript, cil, clojure, cmake, cobol, coffeescript, cpp, cpp-qt, csharp, css, cuesheet, d, dcl, dcpu16, dcs, delphi, diff, div, dos, dot, e, ecmascript, eiffel, email, epc, erlang, euphoria, f1, falcon, fo, fortran, freebasic, freeswitch, fsharp, gambas, gdb, genero, genie, gettext, glsl, gml, gnuplot, go, groovy, gwbasic, haskell, haxe, hicest, hq9plus, html4strict, html5, icon, idl, ini, inno, intercal, io, j, java, java5, javascript, jquery, kixtart, klonec, klonecpp, latex, lb, ldif, lisp, llvm, locobasic, logtalk, lolcode, lotusformulas, lotusscript, lscript, lsl2, lua, m68k, magiksf, make, mapbasic, matlab, mirc, mmix, modula2, modula3, mpasm, mxml, mysql, nagios, netrexx, newlisp, nsis, oberon2, objc, objeck, ocaml, ocaml-brief, octave, oobas, oorexx, oracle11, oracle8, oxygene, oz, parasail, parigp, pascal, pcre, per, perl, perl6, pf, php, php-brief, pic16, pike, pixelbender, pli, plsql, postgresql, povray, powerbuilder, powershell, proftpd, progress, prolog, properties, providex, purebasic, pycon, pys60, python, q, qbasic, rails, rebol, reg, rexx, robots, rpmspec, rsplus, ruby, sas, scala, scheme, scilab, sdlbasic, smalltalk, smarty, spark, sparql, sql, stonescript, systemverilog, tcl, teraterm, text, thinbasic, tsql, typoscript, unicon, upc, urbi, uscript, vala, vb, vbnet, vedit, verilog, vhdl, vim, visualfoxpro, visualprolog, whitespace, whois, winbatch, xbasic, xml, xorg_conf, xpp, yaml, z80, zxbasic


+gid_File_Lib_Merger_base,

Problem

When I merger those library, that will report error when load OOo with UNO component. I do't know why.

Personal tools