c++ - Another link question: how to allow re-definitions?
- Luna Kid (9/9) May 12 2003 Can optlink allow linking a working executable, when
- Walter (5/12) May 12 2003 I'm sorry, it does not. I don't know of any linker that has that.
- Luna Kid (28/37) May 13 2003 Yes, that's part of the game. The question is how the duplicate
- Luna Kid (214/214) May 13 2003 Some more info...
- Luna Kid (194/195) May 13 2003 Dammit, sorry! (FAR Manager appends a space to the
- Walter (4/43) May 13 2003 You can try what's called a "weak" extern.
- Walter (5/44) May 13 2003 Also, put your "default implementations" each in a separate .obj file, a...
Can optlink allow linking a working executable, when modules have conflicting definitions -- symbols having the same name but associated with non-identical code, resolved by e.g. some "first/last wins" logic, like some other linkers do? (Remember "poor man's polymorphism", e.g. for overriding default callback functions provided by a library...) Cheers, Lunatic Sz.
May 12 2003
"Luna Kid" <lunakid neuropolis.org> wrote in message news:b9p93i$30pi$1 digitaldaemon.com...Can optlink allow linking a working executable, when modules have conflicting definitions -- symbols having the same name but associated with non-identical code, resolved by e.g. some "first/last wins" logic, like some other linkers do?I'm sorry, it does not. I don't know of any linker that has that.(Remember "poor man's polymorphism", e.g. for overriding default callback functions provided by a library...)You must be thinking of how libraries are searched for unresolved symbols, in order. That works.
May 12 2003
LCCLNK was the last one I used this way. See below, please.modules have conflicting definitions -- symbols having the same name but associated with non-identical code, resolved by e.g. some "first/last wins" logic, like some other linkers do?I'm sorry, it does not. I don't know of any linker that has that.Yes, that's part of the game. The question is how the duplicate definitions can be resolved in a scenario like this: FRAMEWORK.LIB: _main _callback_one ; default implementation _callback_two ; default implementation ... MYAPP.OBJ: _callback_one ; custom implementation So, how to correclty link this stuff with OPTLINK? link myapp.obj, myapp.exe,, framework.lib, app.def, app.res does not seem to be enough. I used to manage with the few compiler systems I tried, but that was some 5 years ago. But I know LCC works, for sure, as just tried it again: lcclnk -subsystem windows -o test.exe test.obj winmill.lib test.res Of course, I get warnings: def_app.obj: multiple definition of _wm_configure first definition is in file test.obj def_app.obj: multiple definition of _wm_pre_loop first definition is in file test.obj def_app.obj: multiple definition of _wm_post_loop first definition is in file test.obj Time: 8.982 seconds But the executable is created perfectly OK. Thanks, Sz.(Remember "poor man's polymorphism", e.g. for overriding default callback functions provided by a library...)You must be thinking of how libraries are searched for unresolved symbols, in order. That works.
May 13 2003
Some more info... windowed.def: EXETYPE NT SUBSYSTEM WINDOWS link /nodel main.obj test.obj, test.exe,, winmill.lib gdi32.lib, windowed.def, test.res OPTLINK (R) for Win32 Release 7.50B1 Copyright (C) Digital Mars 1989 - 2001 All Rights Reserved winmill.lib(def_app) Offset 04702H Record Type 0091 Error 1: Previous Definition Different : _wm_configure winmill.lib(def_app) Offset 04714H Record Type 0091 Error 1: Previous Definition Different : _wm_pre_loop winmill.lib(def_app) Offset 04727H Record Type 0091 Error 1: Previous Definition Different : _wm_post_loop --- errorlevel 3 P:\win32_\WinMill\lib\v0.05-dmc>test.exe ... So, the EXE is there. But it does not run: (see the attached box). Now, is it possible that OPTLINK has already been doing it for me, I just screw up the EXE type somehow? Or is this failure indeed due to an incomplete link? Thanks, Sz. begin 666 err.gif .dat M1TE&.#EA M_V HCF1IGFBJKFSKOG LNPM7>S>8V]D^W\">$.'3?8+$(=*H0A9%2VBR0JQ= MK)=)H2 04'<)31 QWA1SSN14K30+GVNV6XT>:GS+<Z?^YK.M(7!V;H* .'1O M=W)_<8.$ 3Q1CWR&B(EV091RAG6<C8I^ &E[EYN)GIYS:UBKK:*M<:FQ?;"S MPW$!TW7KXG!A.(;A]G5[%5'-PRX%_[F% !=2(L&2%$5&I*A `;M[$TV"?'BR MW[2O!ZA5LR! 04Q9$".";,6`< -8=22<2N 3+VV;^G6G2LW`<BW9?S^_<MV M,.+-IU>CAOU7L :YK/D2)IT;-FG1< <;3JV9<NK3>3N/ILV8=QD/SU<TYOUA M>HGH<*F#P M?BBB?A[25^*(**;(WP)=:*3BB_.=F**,,'9H'XTD(HAC #O6Z""'/ 89HY!$ M=GFAFEJF:2.15HK(9ICT0>DBA >$%8TT>19P )]Y!BKH`?CU:.&68E+9YIHO MSHEHHXLF^F6!D3)I)IR4MCDAC"4Z6NF(=HHCXY];D+I%`0/4-\"IK)X*``-O MT5)K+;+5.NLKLMCR:BU^QE8K;KCU!:OLL[U"FZRZTB[([++;< NON<C^!Z^U M%3^KL,3P:OA?J ')& "KA()CZJFIJLRJ! 0$2;&XR68L,<CR?JQPQ"&V>S/- MNA+<,+Y67^WQU.^B7;;-.,.M+[WD+IMTUEIK7/6L7 \=[\_Y8JM.J%+*2< ! M`!20^.+!$D" IQM^*OGD1DY*^>68GRGI_^:9=^XYHY./W"(Y<J((^>>HIXZI MZEJJ>3KKL,=>8X;]D9PIG9?*KCOK5Y8^Y895N M\D\$73_SQPR?OKO'*%XJ\ M\+M'+WWJ,N+8H.UD.CGF]-QS;WWWX(<O_OBY;_\CR9"S&7SDT*_?/J+NQP__ M_.S+7S_][]^O?_[\V]\__OZ+E7VX):U?%?" !DP `A>HP 8R\($.C" $'] ` MB' NM*(6K8C!$_]Z,85 ).$7U2'%+9KQC/G!'AK7B$:ZN?&-<(RC'.=(QSK2 MD8UX1*,:\\C'/OKQCX"D(A;+%,A"&O*0B$SDBZ $`"I\9S7G >0,)DG)2EKR M*$13,%&;T*.:%X$(.C!"4HLBTQPFA>A.4-K1DX+4)AE%Z3M &M,/K%28Q^PF M2"]Z3-'0M"08[0!) $,ZGL:$J*),JE*7*H.L:,4!$GIJE< "GVN<I0/B&<]K M9'.>KDJ2-( !*U?%&M&V>)6L9TTK>=3J'+&R=:QN_2I;YPK7K+9UK5K%*UJ] MS %7N<CM[16):"0&Y,F `3B&,IXQC0) ]871F]..')7=\%XW?+6E;A95I*3M M+DJ%]=5O=+TKW -<G,&*-5Y_4$`5CU.'0XHE9]>A3D?- ^Z*++P<IN+H(0) MJUC=`D"#N A>,$G 4--277==J]O;AHA<__%: :<+W^K*2L,T5NV)]KB?5;5J M"S&S3X-_O 4*3U=)]-I/SM(5.+0Y\6TSME79PI8QOD7+6]ERF)-MYK<MQ\W) M AL;T3 HYB9?V<(YZUC8BL8^-TI-S?7*<L3$7.9P ?AF-UR;F3V<9 7-*V]E MAG(.Y:;GH(D8:18CL__!:-;E1O>J1 >^W9")3&E720!6OZ7A;(^\QA/%Z;F9 M1N02[<L-'KO8NJ&&W:8WG$>1`6G5J2ZDJ4LLX!K'>HNTNS6+=<U'".7Z=PV5 M#X%Y36P.%[O6RX7UL=DX:PPO6]<GLJ.TITWM:EO;6+Y^MK;'.]PE;;O5V</Q MNR?% 0/\D'N4[\%334 ).GR"#X M[.Z0F_SD*.\CE'S*\I:[_.4PC[G,9T[SFMO\YCC/N<YWSO.>^_SG0 ^ZT(?_ M3O2B&_WH1J<`)!/ ]*8[_>E0C[K4IT[UJEO]ZEC/NM:WSO6N>_WK8 ^[V,=. MH4 "#H M-( KTF"/ZMM#C0$8( %DT>8.Z","71:>%[X$: [F8U-L_A.7.W5F1G,O>54" M$Z3!QVE(;^DBEJJ$'[-_9E&6X ^"&M_WQ.UE)ZB)#GW GIY)<*4C" ^53\ R MH.<$_R_R*96 `B48OF *+DXA?Z7,?YOT]_[Z\6]___W37_W]IQ3$8%!)` U: M)!+5]TL2^%$6>$P811,ER'L[A4S!YX'BM 8TJ'PGZ!2I)1 FJ$L6N%.L-%'A ME(,HB(+)I'A$Z'N]1(0"U0NK( I0^(3!<'_YUP/Z%W^^$']2R E?4 7XQPI5 M)5$AB! S=5.$R(,*05$NQ8+%5( :I8C95P^RI%/$-(DQ2%PRH5(CV _-5(F+ MC. /,&4?*(!-*T6*R^=\ARB"B3B,>V 0N\B+PT<Z?T ?O1B"]$",S "]G&) MX&%7%ID=8?6/`FE7&DD>`JF0' E:6Q60'FD=X &1F561`VF2(!F2W8%9)[F1 M67C_"OX7A=X'?U99E51)A5\8 '?7E5?Y?Y\PE5;YE1QA"^Y$"_Y'EF<9E5O9 MEE78A5E9%6GIE5XY!6 XEVKY 5"(`5#IA5A E7UY%GP9AH+YE';IEW[YE'!9 M:K;V7> 6.O]F;\Z6<;S5.09G6\=UFEOB:;FU8J-):Z060Z89()%F7[4I7;:) M:^)5G#LT MG)?#FZT M))\-FFP0IB?*<*)[\ R"4J"PV3I9\I_/F9\QNJ#H5IW[UJ$T&INQ0YH)VJ,W MTJ44:I[8::/<F4':A:7.B9ZRR:$SRC_U&: MAJ9,$ISF4W)?PFX-X !/ZB=; MT([<D%Y>06F/HT)8%F\#ZC8OQB]:!BT:\F% 5C R-D"U`F*)FJC[<F;'HEMY M-F]9!C<91RRM22%AQJ ]`ZKB1O]JT3EBA[:;8N*I6QJGYG,NJ%JI ,-FQX*H MV2)E349GA\9D;,-FJ;JI 19B;%,M=S9H]69EX>HM8"-HV#IF]E5G3Y1F;S.M MT2JKFFIG"XME!]LS\"JOX2IH\>JO^5$WJ<HPT)JS`(NR-+NM+$NT`&.RG$HU M&K:N09O_LH7VLO-ZLDM+:MLY1<;**NU5:8?3*C#CH M2",ZN&8:HV=;;(WKMO &N0AFN))SI76['[/F:L &HI3+.[VVGYUKH,DU'PU; M/>C)<7>RN</KGLF[O,S&0D'"HXL[1B D1N4FO=9;O=A+O23$O+ESO=H[O>#K MO>&;O>/[O>*[:;KK7,++O=<)6VSK1_BFFNPK.[Q;'Z^[IIP[_[^!6RZ1RT,8 MN[L//,$ ',$?+,(4+,$D',(5/,(I7,(J;,*#NYVQ&\ XBL$JXC232L,JTL$R M;$5R&CF9JZ8[3$,X/")/QC' 6R/X%L-!O*&82\!+7$A#G&&+%JU1C* Z_,1^ M-"#IB\5L5,5H%+]*S,4ORF_=5KAB/$->?$97?,8JY\1FS,;3DRO',,=T7,=V M?,=XG,=ZO,=\W,=^7,?_"\>NZ\;0%<:"?,B('#M M;+Z4?,F6G,GEN\F5S,F8[,F:W,FB_/_)HQS*I'S*IIS*H%QJSENFJES*JPS+ MLHS*L4S+L_S*MIS+N+S+M<S+M]S+P/S+_K/(CUS,QOQ;C"0!27 8;=?,SOS, MT!S-TCS-U%S-UGS-V)S-T4P&3$<&%1 LW[17C3&2*UG.Y'S.YIS.Z+S.ZMS. M[/S.[AS/\#S M`!W/^;C0"%V+E^>%C526Y1&3ZIC1&KW1'-W1'OW1G ?2E'0#IH< L/>93CEW M)5 )?C!Y[F=]W[1^C_?251F `#A^\O1_?,?2=3=Z54 *,RT+[U?38EE_E =- MYI>&TR=YE/?_?GXWA5 =%18-?O]$?O.G>-!D3S-]EF;)?N\T%6%X"^77TDX- MB^<H!- '?(*->8EM`Z\$>9\WU4APV.2$3XFW3^QW?HV-UT^]>=L7>)W-V?%T M9]E4^-KLY-2[A-[-3=6ID-4ZB)6T4 S)8""I)PU3-8]Q.-?+W8B;N%$J !E, ML$S"5 ,$04QD?=PX>-T9 .'6&(G8]!:*>%.W`8F;V'PE,!&(;14P3GR2J(,6 M+H[6'=X_Z(,38>*Y>.,N..89!8[]883/1]A]3NBN--[4]]V$S>+A/4_Y7=JC M!]]CO=4^W=0VKD^F?7XYO>E0CN2LK>F4'?]^*>H`5^(>$/Z9TK3EHCGCF2&. M)(B-VMWEX2A4.L[C%'Z(*0%4)G6,TS12U^V(P(Z,-)Z)VLV)-67AT5CG+]CA MNBCGOL[L;F'A/878.J7C%<6-*,CHR9[D5QW;KLU_DWX50VW44A'NYE[NZ%Y_ M4MY^7["&>U+JL!B'"V 6JCY4G&&'*5B,Q4B,V!B*MLCJ)I#F;9[L_8X1$B&( MQ"[GN<>(_/[E;P[=>QY4-<X/PL'PKF[MWRB"]4&-^7Z* OY1LVZ*(CWR)-]Y MS7[KL,[J/>_PMZ[_]*1(YL/=\=EH4?=P[#M13<,MZ]B>]><04X1M]27_]6!O MC"6]#GDO^) (]="H&,Y-4T5%4WH.\):H^-2Q\1T1^%UN2]!.^<XXXJ/8'+Q( MDQ+I_-B?D!1YDQTYD]M_DP'MC]%1_H]$DD )_+5?_ (=E,7_60BI^^C!_WKV MKQZ!4 !-Z90]V<T2??P0 %"2E=J:Y<5Z^B\31F4D38W;4C9TUTQ]Y0ZN/3EO M[]CF_AJM!QJZA#X MST_04-%1TE+3A0I4!-75U,)5P\*26-I:VUO<7-U=WE[?7^! X6'B8N-CY&3E MCQ_-<0Q9TF0#DAA3IESWD*7)?BSIO=RX[V1+C_;L5;2&CR9"?S>#AOPY4FA- MHR(9WI-Y5.5$AT6W274J\6=1JE"3*N1YT2K$=E6C`AV*$^74DB1UHA5K5B/8 MK>IBI T;U^58I6S+NGV+UVY=ON_F*LP:MNN"I3X!]SW[-Z_ MI$9+Y8<N?!7 MK603.PY,6:_GR GI*K;9$5M7!'"%7 Z]V>_DA1Q9[^4,&6;KJC-Q$]6\^[-O M>8<Q=YQM.;-<U9W%JGTM&+14Z+])YZ9=_+%HY\ ;V];>?/MI1%ZGOUQ[_7CO M[M_O#N M2^_!U<R3T$'L:DLNHOT>^D^A`/1P( `0`W! 1 ]UR^R^SP:C<$ (602POQ:] M\RVZN)A;$:D8+[R-L_( $^Y&!_;X, `&&" RQ!&#Y(/&^/BK#L?IV NM(2HC MK'"^`P.<4,HI3\K010NWHRE!Z3;<I\,#DA0QR3P MXS+,'>_D$\_L_!1T4*["0^P>/P9XDP`"Y"S 44CG9!20.0L H#MW&E0M4\+ MYW34`6X"\!4=!WKU]42V`)!WWGP`T%,=>;UM8-Y\L>$7WV[ZU:;?:_HEV"QZ MN4G88'OWM;=AA1O.]V!_E?IWG(N_X9=B`#G>!^+&/ [583U;M<EC3O$16=]C M"66[JKJQAKAKIMQNFV6 ZL9W;H^(-H?I2)/F9FG$'_\% ('AU/9[9K(KMQEL MC 6.&."_);Z;9,P?%IWMGFT>>'/0>RXX:M%']YMMC??66>:Q%RY][XK_OEMU MU6FWW'6RLVZ;[XAEW]UX>&J6N_75:W_Y<[V;?YYTXO]V!^OA;Y\^^.T]=S[D MZ1E&7AVB4VY 6'<O!4?=QA\/J7IP8)Z87KXE;REZSLN9>'7)^W_Y]N/E[GOV MV.4R2#O M!,-QPKSUCH/%RV$+V8 ZZFWQC"=\HPS#QT64V1"'%?3=`=&!PSB"T(P<[-T M^,5,.HR"6=3 '06X,O%!#WE MRSF&$H^NC&(?&0A"7/+N=]LK935MV4SP6"0UB$K<-1[I+L6AKP``&( 1)60R M\_52/>E<9[72435VQI,L\E3G/4!6K-!X$E/;TA<][^5/MP"TG;\1:$$10L/* M"51&___8X4B^V3B(RHL`Y 2<4/2YFXM61F/NT>=5KF10 NKCGO/<"[;XA$^[ M:Z)? E6T3--4,3U5JDZE:E2K"E6L3M6J6\UJRUZ$'R4&-5;\' U7M=I5LU[U MK&M5:UO3^E:TQE6K5N-6.OXSIG,8( "3HB0Y&44DL096L.YTJUP+RU:XELRG M;WN9R][WNA= D-T68\6K%? V-[_[E2]_X_M?_8:&J-;RZ7T-[-D#EU6HF$UP M7;SB%[=84P89\'F?<^+*#C M_&0H2]>K4:8R.&K<XRK_E+Y95C"7&VRCH468P$ FLI>!BF7.9LO,]_W2AH6V M?K*>-RFC[/PL$5AC\EO+9C2TG<UM97];W-XF=[<[35V+' I<90;V8Z5X;84$ M+8X)0W.VR=QN'Q\:WU3&M;EYZ\"?M:ZC,GXGJ&/]ZWV3NAM77JRU8/QP K-8 MQ5[YB?6\_^Z:;[;E);\JSEBHOWR17&L=S[F26;)A5^=%Z"9G.LB=SG.HHS5 MT^;QZF;NCZ4_/>M1;SK7M=[HSJ2\UJ(><]$;^T>J&]C>9K^SRJ'&]LKNO,%K MA_N1(W+I]'Y=[U[G^];]+M^0I?V^=-_[WPO?=</W'?%*I ?2ZP+6NF=WX]V] M>N2K[';+.[BFC.)\YSW_>="'7O2C)WWI37]ZST\^\PEV,X.1N_C#QU[QLD]\ MG$ +K$ ,O$ -S$ .W$ /[$ 0W,"*.($2*$$!,$$4/$$53$$67$$7;$$8?$$9 *?$(IC$(<C ``.P`` ` end
May 13 2003
So, the EXE is there. But it does not run: (see the attached box).Dammit, sorry! (FAR Manager appends a space to the filename on copy, that's why it won't open... :-/ ) Spammer Sz. begin 666 err.gif M1TE&.#EA M_V HCF1IGFBJKFSKOG LNPM7>S>8V]D^W\">$.'3?8+$(=*H0A9%2VBR0JQ= MK)=)H2 04'<)31 QWA1SSN14K30+GVNV6XT>:GS+<Z?^YK.M(7!V;H* .'1O M=W)_<8.$ 3Q1CWR&B(EV091RAG6<C8I^ &E[EYN)GIYS:UBKK:*M<:FQ?;"S MPW$!TW7KXG!A.(;A]G5[%5'-PRX%_[F% !=2(L&2%$5&I*A `;M[$TV"?'BR MW[2O!ZA5LR! 04Q9$".";,6`< -8=22<2N 3+VV;^G6G2LW`<BW9?S^_<MV M,.+-IU>CAOU7L :YK/D2)IT;-FG1< <;3JV9<NK3>3N/ILV8=QD/SU<TYOUA M>HGH<*F#P M?BBB?A[25^*(**;(WP)=:*3BB_.=F**,,'9H'XTD(HAC #O6Z""'/ 89HY!$ M=GFAFEJF:2.15HK(9ICT0>DBA >$%8TT>19P )]Y!BKH`?CU:.&68E+9YIHO MSHEHHXLF^F6!D3)I)IR4MCDAC"4Z6NF(=HHCXY];D+I%`0/4-\"IK)X*``-O MT5)K+;+5.NLKLMCR:BU^QE8K;KCU!:OLL[U"FZRZTB[([++;< NON<C^!Z^U M%3^KL,3P:OA?J ')& "KA()CZJFIJLRJ! 0$2;&XR68L,<CR?JQPQ"&V>S/- MNA+<,+Y67^WQU.^B7;;-.,.M+[WD+IMTUEIK7/6L7 \=[\_Y8JM.J%+*2< ! M`!20^.+!$D" IQM^*OGD1DY*^>68GRGI_^:9=^XYHY./W"(Y<J((^>>HIXZI MZEJJ>3KKL,=>8X;]D9PIG9?*KCOK5Y8^Y895N M\D\$73_SQPR?OKO'*%XJ\ M\+M'+WWJ,N+8H.UD.CGF]-QS;WWWX(<O_OBY;_\CR9"S&7SDT*_?/J+NQP__ M_.S+7S_][]^O?_[\V]\__OZ+E7VX):U?%?" !DP `A>HP 8R\($.C" $'] ` MB' NM*(6K8C!$_]Z,85 ).$7U2'%+9KQC/G!'AK7B$:ZN?&-<(RC'.=(QSK2 MD8UX1*,:\\C'/OKQCX"D(A;+%,A"&O*0B$SDBZ $`"I\9S7G >0,)DG)2EKR M*$13,%&;T*.:%X$(.C!"4HLBTQPFA>A.4-K1DX+4)AE%Z3M &M,/K%28Q^PF M2"]Z3-'0M"08[0!) $,ZGL:$J*),JE*7*H.L:,4!$GIJE< "GVN<I0/B&<]K M9'.>KDJ2-( !*U?%&M&V>)6L9TTK>=3J'+&R=:QN_2I;YPK7K+9UK5K%*UJ] MS %7N<CM[16):"0&Y,F `3B&,IXQC0) ]871F]..')7=\%XW?+6E;A95I*3M M+DJ%]=5O=+TKW -<G,&*-5Y_4$`5CU.'0XHE9]>A3D?- ^Z*++P<IN+H(0) MJUC=`D"#N A>,$G 4--277==J]O;AHA<__%: :<+W^K*2L,T5NV)]KB?5;5J M"S&S3X-_O 4*3U=)]-I/SM(5.+0Y\6TSME79PI8QOD7+6]ERF)-MYK<MQ\W) M AL;T3 HYB9?V<(YZUC8BL8^-TI-S?7*<L3$7.9P ?AF-UR;F3V<9 7-*V]E MAG(.Y:;GH(D8:18CL__!:-;E1O>J1 >^W9")3&E720!6OZ7A;(^\QA/%Z;F9 M1N02[<L-'KO8NJ&&W:8WG$>1`6G5J2ZDJ4LLX!K'>HNTNS6+=<U'".7Z=PV5 M#X%Y36P.%[O6RX7UL=DX:PPO6]<GLJ.TITWM:EO;6+Y^MK;'.]PE;;O5V</Q MNR?% 0/\D'N4[\%334 ).GR"#X M[.Z0F_SD*.\CE'S*\I:[_.4PC[G,9T[SFMO\YCC/N<YWSO.>^_SG0 ^ZT(?_ M3O2B&_WH1J<`)!/ ]*8[_>E0C[K4IT[UJEO]ZEC/NM:WSO6N>_WK8 ^[V,=. MH4 "#H M-( KTF"/ZMM#C0$8( %DT>8.Z","71:>%[X$: [F8U-L_A.7.W5F1G,O>54" M$Z3!QVE(;^DBEJJ$'[-_9E&6X ^"&M_WQ.UE)ZB)#GW GIY)<*4C" ^53\ R MH.<$_R_R*96 `B48OF *+DXA?Z7,?YOT]_[Z\6]___W37_W]IQ3$8%!)` U: M)!+5]TL2^%$6>$P811,ER'L[A4S!YX'BM 8TJ'PGZ!2I)1 FJ$L6N%.L-%'A ME(,HB(+)I'A$Z'N]1(0"U0NK( I0^(3!<'_YUP/Z%W^^$']2R E?4 7XQPI5 M)5$AB! S=5.$R(,*05$NQ8+%5( :I8C95P^RI%/$-(DQ2%PRH5(CV _-5(F+ MC. /,&4?*(!-*T6*R^=\ARB"B3B,>V 0N\B+PT<Z?T ?O1B"]$",S "]G&) MX&%7%ID=8?6/`FE7&DD>`JF0' E:6Q60'FD=X &1F561`VF2(!F2W8%9)[F1 M67C_"OX7A=X'?U99E51)A5\8 '?7E5?Y?Y\PE5;YE1QA"^Y$"_Y'EF<9E5O9 MEE78A5E9%6GIE5XY!6 XEVKY 5"(`5#IA5A E7UY%GP9AH+YE';IEW[YE'!9 M:K;V7> 6.O]F;\Z6<;S5.09G6\=UFEOB:;FU8J-):Z060Z89()%F7[4I7;:) M:^)5G#LT MG)?#FZT M))\-FFP0IB?*<*)[\ R"4J"PV3I9\I_/F9\QNJ#H5IW[UJ$T&INQ0YH)VJ,W MTJ44:I[8::/<F4':A:7.B9ZRR:$SRC_U&: MAJ9,$ISF4W)?PFX-X !/ZB=; MT([<D%Y>06F/HT)8%F\#ZC8OQB]:!BT:\F% 5C R-D"U`F*)FJC[<F;'HEMY M-F]9!C<91RRM22%AQJ ]`ZKB1O]JT3EBA[:;8N*I6QJGYG,NJ%JI ,-FQX*H MV2)E349GA\9D;,-FJ;JI 19B;%,M=S9H]69EX>HM8"-HV#IF]E5G3Y1F;S.M MT2JKFFIG"XME!]LS\"JOX2IH\>JO^5$WJ<HPT)JS`(NR-+NM+$NT`&.RG$HU M&K:N09O_LH7VLO-ZLDM+:MLY1<;**NU5:8?3*C#CH M2",ZN&8:HV=;;(WKMO &N0AFN))SI76['[/F:L &HI3+.[VVGYUKH,DU'PU; M/>C)<7>RN</KGLF[O,S&0D'"HXL[1B D1N4FO=9;O=A+O23$O+ESO=H[O>#K MO>&;O>/[O>*[:;KK7,++O=<)6VSK1_BFFNPK.[Q;'Z^[IIP[_[^!6RZ1RT,8 MN[L//,$ ',$?+,(4+,$D',(5/,(I7,(J;,*#NYVQ&\ XBL$JXC232L,JTL$R M;$5R&CF9JZ8[3$,X/")/QC' 6R/X%L-!O*&82\!+7$A#G&&+%JU1C* Z_,1^ M-"#IB\5L5,5H%+]*S,4ORF_=5KAB/$->?$97?,8JY\1FS,;3DRO',,=T7,=V M?,=XG,=ZO,=\W,=^7,?_"\>NZ\;0%<:"?,B('#M M;+Z4?,F6G,GEN\F5S,F8[,F:W,FB_/_)HQS*I'S*IIS*H%QJSENFJES*JPS+ MLHS*L4S+L_S*MIS+N+S+M<S+M]S+P/S+_K/(CUS,QOQ;C"0!27 8;=?,SOS, MT!S-TCS-U%S-UGS-V)S-T4P&3$<&%1 LW[17C3&2*UG.Y'S.YIS.Z+S.ZMS. M[/S.[AS/\#S M`!W/^;C0"%V+E^>%C526Y1&3ZIC1&KW1'-W1'OW1G ?2E'0#IH< L/>93CEW M)5 )?C!Y[F=]W[1^C_?251F `#A^\O1_?,?2=3=Z54 *,RT+[U?38EE_E =- MYI>&TR=YE/?_?GXWA5 =%18-?O]$?O.G>-!D3S-]EF;)?N\T%6%X"^77TDX- MB^<H!- '?(*->8EM`Z\$>9\WU4APV.2$3XFW3^QW?HV-UT^]>=L7>)W-V?%T M9]E4^-KLY-2[A-[-3=6ID-4ZB)6T4 S)8""I)PU3-8]Q.-?+W8B;N%$J !E, ML$S"5 ,$04QD?=PX>-T9 .'6&(G8]!:*>%.W`8F;V'PE,!&(;14P3GR2J(,6 M+H[6'=X_Z(,38>*Y>.,N..89!8[]883/1]A]3NBN--[4]]V$S>+A/4_Y7=JC M!]]CO=4^W=0VKD^F?7XYO>E0CN2LK>F4'?]^*>H`5^(>$/Z9TK3EHCGCF2&. M)(B-VMWEX2A4.L[C%'Z(*0%4)G6,TS12U^V(P(Z,-)Z)VLV)-67AT5CG+]CA MNBCGOL[L;F'A/878.J7C%<6-*,CHR9[D5QW;KLU_DWX50VW44A'NYE[NZ%Y_ M4MY^7["&>U+JL!B'"V 6JCY4G&&'*5B,Q4B,V!B*MLCJ)I#F;9[L_8X1$B&( MQ"[GN<>(_/[E;P[=>QY4-<X/PL'PKF[MWRB"]4&-^7Z* OY1LVZ*(CWR)-]Y MS7[KL,[J/>_PMZ[_]*1(YL/=\=EH4?=P[#M13<,MZ]B>]><04X1M]27_]6!O MC"6]#GDO^) (]="H&,Y-4T5%4WH.\):H^-2Q\1T1^%UN2]!.^<XXXJ/8'+Q( MDQ+I_-B?D!1YDQTYD]M_DP'MC]%1_H]$DD )_+5?_ (=E,7_60BI^^C!_WKV MKQZ!4 !-Z90]V<T2??P0 %"2E=J:Y<5Z^B\31F4D38W;4C9TUTQ]Y0ZN/3EO M[]CF_AJM!QJZA#X MST_04-%1TE+3A0I4!-75U,)5P\*26-I:VUO<7-U=WE[?7^! X6'B8N-CY&3E MCQ_-<0Q9TF0#DAA3IESWD*7)?BSIO=RX[V1+C_;L5;2&CR9"?S>#AOPY4FA- MHR(9WI-Y5.5$AT6W274J\6=1JE"3*N1YT2K$=E6C`AV*$^74DB1UHA5K5B/8 MK>IBI T;U^58I6S+NGV+UVY=ON_F*LP:MNN"I3X!]SW[-Z_ MI$9+Y8<N?!7 MK603.PY,6:_GR GI*K;9$5M7!'"%7 Z]V>_DA1Q9[^4,&6;KJC-Q$]6\^[-O M>8<Q=YQM.;-<U9W%JGTM&+14Z+])YZ9=_+%HY\ ;V];>?/MI1%ZGOUQ[_7CO M[M_O#N M2^_!U<R3T$'L:DLNHOT>^D^A`/1P( `0`W! 1 ]UR^R^SP:C<$ (602POQ:] M\RVZN)A;$:D8+[R-L_( $^Y&!_;X, `&&" RQ!&#Y(/&^/BK#L?IV NM(2HC MK'"^`P.<4,HI3\K010NWHRE!Z3;<I\,#DA0QR3P MXS+,'>_D$\_L_!1T4*["0^P>/P9XDP`"Y"S 44CG9!20.0L H#MW&E0M4\+ MYW34`6X"\!4=!WKU]42V`)!WWGP`T%,=>;UM8-Y\L>$7WV[ZU:;?:_HEV"QZ MN4G88'OWM;=AA1O.]V!_E?IWG(N_X9=B`#G>!^+&/ [583U;M<EC3O$16=]C M"66[JKJQAKAKIMQNFV6 ZL9W;H^(-H?I2)/F9FG$'_\% ('AU/9[9K(KMQEL MC 6.&."_);Z;9,P?%IWMGFT>>'/0>RXX:M%']YMMC??66>:Q%RY][XK_OEMU MU6FWW'6RLVZ;[XAEW]UX>&J6N_75:W_Y<[V;?YYTXO]V!^OA;Y\^^.T]=S[D MZ1E&7AVB4VY 6'<O!4?=QA\/J7IP8)Z87KXE;REZSLN9>'7)^W_Y]N/E[GOV MV.4R2#O M!,-QPKSUCH/%RV$+V8 ZZFWQC"=\HPS#QT64V1"'%?3=`=&!PSB"T(P<[-T M^,5,.HR"6=3 '06X,O%!#WE MRSF&$H^NC&(?&0A"7/+N=]LK935MV4SP6"0UB$K<-1[I+L6AKP``&( 1)60R M\_52/>E<9[72435VQI,L\E3G/4!6K-!X$E/;TA<][^5/MP"TG;\1:$$10L/* M"51&___8X4B^V3B(RHL`Y 2<4/2YFXM61F/NT>=5KF10 NKCGO/<"[;XA$^[ M:Z)? E6T3--4,3U5JDZE:E2K"E6L3M6J6\UJRUZ$'R4&-5;\' U7M=I5LU[U MK&M5:UO3^E:TQE6K5N-6.OXSIG,8( "3HB0Y&44DL096L.YTJUP+RU:XELRG M;WN9R][WNA= D-T68\6K%? V-[_[E2]_X_M?_8:&J-;RZ7T-[-D#EU6HF$UP M7;SB%[=84P89\'F?<^+*#C M_&0H2]>K4:8R.&K<XRK_E+Y95C"7&VRCH468P$ FLI>!BF7.9LO,]_W2AH6V M?K*>-RFC[/PL$5AC\EO+9C2TG<UM97];W-XF=[<[35V+' I<90;V8Z5X;84$ M+8X)0W.VR=QN'Q\:WU3&M;EYZ\"?M:ZC,GXGJ&/]ZWV3NAM77JRU8/QP K-8 MQ5[YB?6\_^Z:;[;E);\JSEBHOWR17&L=S[F26;)A5^=%Z"9G.LB=SG.HHS5 MT^;QZF;NCZ4_/>M1;SK7M=[HSJ2\UJ(><]$;^T>J&]C>9K^SRJ'&]LKNO,%K MA_N1(W+I]'Y=[U[G^];]+M^0I?V^=-_[WPO?=</W'?%*I ?2ZP+6NF=WX]V] M>N2K[';+.[BFC.)\YSW_>="'7O2C)WWI37]ZST\^\PEV,X.1N_C#QU[QLD]\ MG$ +K$ ,O$ -S$ .W$ /[$ 0W,"*.($2*$$!,$$4/$$53$$67$$7;$$8?$$9 *?$(IC$(<C ``.P`` ` end
May 13 2003
You can try what's called a "weak" extern. "Luna Kid" <lunakid neuropolis.org> wrote in message news:b9qhmq$14o3$1 digitaldaemon.com...symbols,LCCLNK was the last one I used this way. See below, please.modules have conflicting definitions -- symbols having the same name but associated with non-identical code, resolved by e.g. some "first/last wins" logic, like some other linkers do?I'm sorry, it does not. I don't know of any linker that has that.(Remember "poor man's polymorphism", e.g. for overriding default callback functions provided by a library...)You must be thinking of how libraries are searched for unresolvedin order. That works.Yes, that's part of the game. The question is how the duplicate definitions can be resolved in a scenario like this: FRAMEWORK.LIB: _main _callback_one ; default implementation _callback_two ; default implementation ... MYAPP.OBJ: _callback_one ; custom implementation So, how to correclty link this stuff with OPTLINK? link myapp.obj, myapp.exe,, framework.lib, app.def, app.res does not seem to be enough. I used to manage with the few compiler systems I tried, but that was some 5 years ago. But I know LCC works, for sure, as just tried it again: lcclnk -subsystem windows -o test.exe test.obj winmill.lib test.res Of course, I get warnings: def_app.obj: multiple definition of _wm_configure first definition is in file test.obj def_app.obj: multiple definition of _wm_pre_loop first definition is in file test.obj def_app.obj: multiple definition of _wm_post_loop first definition is in file test.obj Time: 8.982 seconds But the executable is created perfectly OK. Thanks, Sz.
May 13 2003
Also, put your "default implementations" each in a separate .obj file, and put those .obj files in a library. Link that library last. "Luna Kid" <lunakid neuropolis.org> wrote in message news:b9qhmq$14o3$1 digitaldaemon.com...symbols,LCCLNK was the last one I used this way. See below, please.modules have conflicting definitions -- symbols having the same name but associated with non-identical code, resolved by e.g. some "first/last wins" logic, like some other linkers do?I'm sorry, it does not. I don't know of any linker that has that.(Remember "poor man's polymorphism", e.g. for overriding default callback functions provided by a library...)You must be thinking of how libraries are searched for unresolvedin order. That works.Yes, that's part of the game. The question is how the duplicate definitions can be resolved in a scenario like this: FRAMEWORK.LIB: _main _callback_one ; default implementation _callback_two ; default implementation ... MYAPP.OBJ: _callback_one ; custom implementation So, how to correclty link this stuff with OPTLINK? link myapp.obj, myapp.exe,, framework.lib, app.def, app.res does not seem to be enough. I used to manage with the few compiler systems I tried, but that was some 5 years ago. But I know LCC works, for sure, as just tried it again: lcclnk -subsystem windows -o test.exe test.obj winmill.lib test.res Of course, I get warnings: def_app.obj: multiple definition of _wm_configure first definition is in file test.obj def_app.obj: multiple definition of _wm_pre_loop first definition is in file test.obj def_app.obj: multiple definition of _wm_post_loop first definition is in file test.obj Time: 8.982 seconds But the executable is created perfectly OK. Thanks, Sz.
May 13 2003