D - DMD 0.79 com server and template problems - comserver.zip
- one_mad_alien hotmail.com (209/209) Feb 11 2004 I noticed that the sample self registering inprocess com server dll exam...
I noticed that the sample self registering inprocess com server dll example had a strange behaviour : when the dll is unloaded (not sure why CoFreeLibrary was called and no FreeLibrary) the console IO also stopped. this can be solved by keeping the dll loaded until the app exits, this I assume is due to the runtime lib shutdown code closing stdin/out/err which my be an indiccator that there are other issues with dll's written in D (apart from the multipul GC's that will be running [not nec a bad thing]) also I tried to use the template T(alias A) syntax to ease calling CoCreateInstance template ComCreate(alias clz_guid, alias if_guid, IFACE ) { IFACE newInstance() { HRESULT hr; IFACE obj; hr = CoCreateInstance( &clz_guid, null, CLSCTX_ALL, &if_guid, &obj ); if ( FAILED( hr ) ) { throw new Exception( "unable to create new instance" ); } return obj; } } called with pIHello = ComCreate!(CLSID_Hello, IID_IHello, IHello).newInstance(); this however gives the error OPTLINK (R) for Win32 Release 7.50B1 Copyright (C) Digital Mars 1989 - 2001 All Rights Reserved dclient.obj(dclient) Error 42: Symbol Undefined _D7dclient10IID_IHelloS3std1c7windows3com4GUID dclient.obj(dclient) Error 42: Symbol Undefined _D7dclient11CLSID_HelloS3std1c7windows3com4GUID --- errorlevel 2 is this a problem with the compiler or with my code ? the work around was to do template ComCreate( IFACE ) { IFACE newInstance(GUID * clz_guid, GUID * if_guid ) { HRESULT hr; IFACE obj; hr = CoCreateInstance( clz_guid, null, CLSCTX_ALL, if_guid, &obj ); if ( FAILED( hr ) ) { throw new Exception( "unable to create new instance" ); } return obj; } } pIHello = ComCreate!(IHello).newInstance(&CLSID_Hello, &IID_IHello); begin 0644 comserver.zip MK4`!`0``[ $``!(```!C;VUS97)V97(O8G5I;&0N<VAED$UKPS`,AN^!_`=! M=UBA26$[]S!:MDO*#F.W7 MK7)H &Q`=U%:.D_/0MU"H8$FVQZD$*';U52DK;4F&10.&94LOYI:5/H?,?72 MV:QX+Z#FE MQ:9S '$68X&Q!34`/8!':[[Z/=U;=".9EAFE6>ZPT>JW\73AAU-_T7O/WO+A MP0W2`T0`?29IQJFC"R[&0K.80C#Q+VJ%UI(Z/V,I5F=`F[ ;=?&7R?[I)F>K MXUVDEHGU:\LM$['<ZOW_>\>8>+\6FFULV]V.YRUV&75BP%KDZB\:F<N88C2Y M$\RIX0 >S(9 E -JHU9[E(JC"[ZY00)3,"H6U)= `V+ Y[M5>! .I5Z7]`2 M3\2HX*./[\B7=*P`EA5QJ7-%K7_#EM_`"J`*5R).9LOIW33X/ 69`('H-'YW M[UE%>B,74X;=;J X<%EZOE[,LE_VL$#W#B6 M'55Y X-O_W!\J&%0P[`&_]1Y_M=E48>^IUJ3-;V6SU=-D7/>N2AZWBU-+SIN M]_[Z(;AK'>'19SODT/Q>J+W5J[=C1A6J+]7(&:I-&(9"_KNXHUP_2F%93?ZL M]C>D)L<TOQ&>TUX)?!T$DWKCC,H1/'$ 22XBER=V4^=1A/PD.>^\T_($<\/` MZ*BV3-.JZ^5LY"O.HMZ!?Q=XC./YL1X4EB<ML#ZJ*,MF?M25*B1NWH;^?#E9 MP!\Y53MW)R<DHLWQ>-0&Q5C<P2GY%HQ'T,ZRIP\E]`KI[=202!OCH1+[8`!M M&\^&:-A8*-)J%%I69WM7:MFL_`N-O.WMSDY\R\>7O9W-SIXW2KK\AVG /C0W M5T-_[^BX<T]7<1S2I/F:Y&G AV$0GDS3<A),OZ+`."6:?JRCE?&[S'V"GP9P M>1G)7)A6+76WT:]2+2;-+KS\$=II=R/S<AAP<`XW/RIY+>T^V9(=X"PQ [>: M.`#H36X M`` `NDY+,*.%\RNZ!0``O`\``!,```!C;VUS97)V97(O9&-L:65N="YDS5?K M;QI'$/^,)?\/8R0[=Q:!. ]%L96HY#C'IV*PP"21V HM=XO99.^6[BUQG,;] MVSO[N`?8.*G:#S4R M.9MMGEZS+!'7>?&Y[1K!3FHP8O:1QFJ=F.2H-!HHA32D](NVUGMO)?CP9CCL M7K\/?^[N-'*=-S'$(LL5Q`LB,2R8:=/3R2"8#KKG(2KY"IH]S MFFWO-DRW, MDJ %^,; AD-!Q?KH;Q>AKJ=)M,<:C27Z1\V]) J%DG8_^2UKM H5P5*R.7CE MT6N(2:Z\TBB_?)J&H]%P!+YF,2J4$&L:^)"OXIA2S`'$L B-FN$F$F^INL"Z MZR:)I'E>HK<V E9Q5WYYB'LS:HZ_T%/65=A?MF">X<.C_?R1\4I-R0U%-N2L MZLK<*Z=2]XY23I9QNK=7P_3AVS=[4G'[1; ;F`E27$-&KR'\$M.E;F\>-"<9 MF=FRN\(V)>D?*R9U\\6,,HV46!_1O%DXX[:"WQM/ B`,>V$/53FLJ^)IX!^& M+K1=QS!OE.>T2IA_9`/J4PC4HFY-/?QE"L)I=K\1->^MF?$]\"JJ==A&O0%N M%$Y5 ]F*\Q.KY&W5K`*!`W*)6:(5Z+T?CGJ8><GU.UO]=4NP 9Z33Q1+1U(( MAN?`<E`+"G;08:?)45M-:+ 1,!!O5HPG[^R-5RMDF::P]PK.(HWG&7J_7K3W MNR'*8B$EC 88G-_4D"B8>ELPR&=3I0QQ;!Q?Z6:ND0^[49]'85`5`2><8V) MPG=UL,ASPCA&'P/"2BEK^$456O**J&PWMYMY$ =Q$F&0]KU*49SY[-`3+)* M5<4^H^$1SAJ2Q;10L1B`"Y,:C [TV+:99F-N`4M>.*A`M9MQ7>J/ \L/TVZ_ MU,,)7)GF#IPY M#UDA9MES8H%IN]2]">&+4Y?TAO*>54KO"I;A[B5:EI E5[9KG;DH1GM33H+: MSYX<P_ FG0D.DRRA<Q2;P+3WPM$>_52I.7Z*B_A1_,)M[4]Q:W^FT_T_P3FJ M^>8AH+6F:GXGN,S%4H )-UZRZK8O-)GG%]XUZX_9>995J,I`%=1KB6+.YD9N M+4ETSC.45G".**<DIQN\[M0Q [>?^`:<V62\Q0L5+[! RW($6K0+)P.:`5GI MF5I5['[[,+=R:%N)L=+YKA>'=9%=\V/).IYLE5JCJLDE#PEV'A?;1-K[FC1Q M5YC^80; VDGX(;J<FJ5H/#YQ/46__ 902P,$%``"`` `9 %+,"8.L8N`"P`` MTRQZN$V0VW-M)37JV#G;Z:&W71B*1,>\R)( 2G'=1?K;;X8O$B7925I L8<S MT(U-<EXXG'EFAMQ.\V"?-,E[& 01&=_^AWHIZ0^'9$J#Q>L)O6,\I0D+[V` M*8M"<I.R *6;%NDMW1BDD;=(((AZ4;Q)V-TR)99GO_GYYY]>PW_>DBOF)1&/ M%BDL2.(H$7Q:I!L$9(*K.9E0CO+\G-.'Q&5WY%T2>??<6ZZ8G[8*-F+%(`39 M(4T).27D'I??_F.E5[2]:*4T6L69X`VK_CX8S9S)R)F=[EH/]CC89RO0,24\ M]=M>&_[+HK/Z8,!NRZ- (+![=>6:A7ZTYOKOKFD0?V:(]I9XOF($#J S6S). MO,#EG M(2D;K:MW\_$'&W:T]XC::<;?7L#YVP[6WY[ 3;^ <Q#K7]*^]JDIM-,A YOP M! /UK>O[$[JP<J,JJM'8F4S&DYH'HC.4MESWB)X(LD'(4S=$C]"G$\.7<09' M"G%4]Q("VD.8F9XB_8+$,*RUTS*6R5F^ Q<Y5$6I[0[5E#H81L3190(#SGQ\ M,QM?7#E7X M'/+JO+`-.3Q$DWJKV#HT M)4#VD2S:4-\NA.,N7\7J9+7"YO'A`IQO#T*66G8I=(3IQ60%$*0QE,O4G;K3 M^0`9W-PO2&'`G[F!3`*X93P2&(,DP0+JMPU]+KJ#H MWM[=W(/1HZ-B/^869>P8L3&$!"U+!>O=>#PD"QSX;G0TN.Q&QIPUZHC?A9)5 MY7'B]>N:]M7P?\R3:R_*PA3B`Z.>1`N=1(D;^L9H (4(6/1F.!Y=*NB0ICH_ M3'B1.0*$*V-DOJHLF4.=EP6T!Z:MC][`VAFX-1=3CZ8JI60I3K,?!%<N"ZUB M$TN-."TB]YP%$^IR+.<4\,4/NIBS\X*BTU$;PRR`VC3MPYS3F89COF:IMR26 M#N^5$J'\\(. 4?'26PC$^S,SN]04[CNFPG7V<GX[^]+1/R-O! ':[1?VV;6 MN=A\8_%32GJ%-ECGFI^\A`0O62\98"+XF/9\4Z_M:L216%`(F$C2CVZ0Z0C0 M\"^,-':*L/00DB($!P`2$7$*.F.%SD\ZL*A/C`]F!!0'Z4IP`UZ9:` R4$-D MG<*?MWIPSPUOPB!R_5&TM K/G/;&?:S=N/>,NY7IZ\ZFW0VLMY'E)-;K" Q_ M4160AP72,;;=LKC$[DG_%.4O^85, 2$YA3\7W>'4*>=%H>5C_<0PBV+_(Y,` M]:<\6E$B4OH]W1!Y0RC<&AU+_+I(HM7ES:!_8AT:V-(BUO!Z/'2FLXF-VVH1 MN5*5IA_HIAOZXORMAM#Q3 M>9E2/Z*14"=+0&1#TZ&2S],\O0450JK\TZ5?G6%^&M^A>''$TBPO4;R V67< M)V__^ PNUO7X?T)&0/V^J)/0+:WW'YQ/<W%#Z4SGD_%XIL/F\V<%(YKKR^D$ ME'PG6>.[%01T^$%9&E<JYD3O:&D?JME2SC:VF5E-*=QYL3*2\`]09"<D_OFJ M);V+>`6Z4;PA) \HJ26NBKT`A'!)`4N>N*^)^5?0T^SV9X!FF'<P"X6P&&]) M\#OPR4FFV>U]3J5(DC*)"UGEUJ01AM N1F NKJZ !:4_TFB9&6QG?R6(*_E< M*2+-T"+%3[E%<T00&+<$X"3Y[0`0;TM8,*SS%0Z `GL)Y5F0UD-!R)=ZE-O\ M7)GZ%70>#H M)4X*V2VBQ![K6G+B7,['U_AV-A_!OX_C87<V&#HF";+K#H?SKI"H"0^7 I&H M.:1I:R[XK`.C8% H$ZV<]]$;NXGG+M\.T5(ETZFWN8K6\NEG3RG3PX %)80F MVUF4CLK<^Z-Q8R,7X/)Z:51Q?5L]S56+(P/?<E^M=_&5-\D="'=A0AJ&NOG_ MAHB>WPT"LE[2$`I<<H=`YFN6;<E"WONNZ5\2O&L$7,%;F34$>!ALP&-=[U[B M3NU*%Z]Z6I('('N*UR^5FQ&2NO=XE9KD(`<;3 O`T&]1?9N(5ZO*GHWZMF[L MVMIM9I;W*N*%,+>PD%0J' 6D-#E*`YJU_+G.,0)-:ZWQKD9-V?P,Y\GZZ` = MH<F/CF!64(AW>`Z_CJ5(/,SB\0_O<HFZ 92L /?*A4:IW6X7FU7.<:RU1F/] M%U!+`P04``(`"`!X&X,AE-E8'[<```!B`0``%0```&-O;7-E<G9E<B]D<V5R M:3W+.X>9N8+'&NL"+:1,"`4!989HGEFNY"L.4^=]B]3IYLX#HD( X_QUHUU5 M]X/KZJ8: ^[NNA`""-B1V2)C02`M!$11AK[(-!,*4T2Y(5A3'`LVWL,6KTF& MRV2:3SLSI:V!`/U`O4_<0'S9]^_W9J+MJDO*)F]\6UYD^_CDT6[57>K-U19W MO^KF3?=O1P<(GE!+`P04``(`"``W!DLPDI>*>7P!``!X` ``$ ```&-O;7-E M6P<-7;MT54:,W]UVPW\//I V;9J>^[OWW+;71L`5D6D4$Z1"(K DC`G;0AN7 M)'JEC&V0B82FE"1(I<B&YJYG6[UV)9KYDXO0'W>]Z;0^$_E*I-Y8V G) A9* MJDA1P3%7E%&U<>`MHURGQ+X)J((\D6\D72P5FG&K?WBXU]'+/JYI+$4A4J4% M,A>RXC X90RA41<(26'R)5^D*QG1!<ZDB%=%O,QHHIQO3*6H['*B "&P,O+G MD^Q3T8U%MJTHRU\JME8=!S=W?GCCWPW_TIM^]'"AVX.( Y11EC-2M0N- !<T MM]QS![O]_L!U4,\'M_1<Y]<H!P>/>!]M$8$&U.^++<+]!T*7^?53MI0A CE? M<;'FMO5F6Z0TK47SOG;0TE]E1\= *O7:;&G&>VW(MCX`4$L!`A0`%``````` M1T=+,-[ NS`9````&0```!,``````````0` `````````&-O;7-E<G9E<B]B M=6EL9"YB87102P$"%``4``(`"``Q!4LPRLNM0`$!``#N`0``$ `````````! M`"````!*````8V]M<V5R=F5R+V)U:6QD+G-H4$L!`A0`%``"`` `F`)+,.=R MY&T;!```V D``!(``````````0` ````>P$``&-O;7-E<G9E<B]C:&5L;&\N M9%!+`0(4`!0`` `(`+I.2S"CA?,KN 4``+P/```3``````````$`(````,8% M``!C;VUS97)V97(O9&-L:65N="YD4$L!`A0`%``"`` `9 %+,"8.L8N`"P`` M"R8``!,``````````0` ````L0L``&-O;7-E<G9E<B]D<V5R=F5R+F102P$" M%``4``(`"`!X&X,AE-E8'[<```!B`0``%0`````````!`"````!B%P``8V]M M<V5R=F5R+V1S97)V97(N9&5F4$L!`A0`%``"`` `-P9+,)*7BGE\`0``>`(` M`!(``````````0` ````3! ``&-O;7-E<G9E<B]I:&5L;&\N9%!+!08````` !P`'`,8!``#X&0`````` ` end
Feb 11 2004