Thread overview | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
November 23, 2004 Unable to link Windows examples | ||||
---|---|---|---|---|
| ||||
Hi! I don't know if this is a bug or if it's just my fault, but I didn't find a general help newsgroup for D so I'm just posting it here. I have installed the D compiler on my Win2k system along with the linker and the tools. I'm using the Zeus editor to compile/edit sources. Now the problem is, I am unable to correctly link any of the windows examples in the \dmd\samples\d\ directory. After compiling/linking, I do get an .exe file, but it seems to be broken (Windows reports "xxx is not a valid Win32 application). Also, I'm getting strange linker errors. For example, if I try to compile and link chello.d, I get: parse chello semantic chello semantic2 chello semantic3 chello code chello generating code for function 'this' generating code for function '_dtor' generating code for function 'Init' generating code for function 'QueryInterface' generating code for function 'Release' generating code for function 'Print' c:\dm\bin\link.exe chello,,,user32+kernel32/co/noi; OPTLINK (R) for Win32 Release 7.50B1 Copyright (C) Digital Mars 1989 - 2001 All Rights Reserved chello.obj(chello) Error 42: Symbol Undefined _D9invariant12_d_invariantFC6ObjectZv chello.obj(chello) Error 42: Symbol Undefined _IID_IUnknown chello.obj(chello) Error 42: Symbol Undefined __D3std1c7windows3com9ComObject6AddRefWZk@0 chello.obj(chello) Error 42: Symbol Undefined _D6object6Object8opEqualsFC6ObjectZi chello.obj(chello) Error 42: Symbol Undefined _D6object6Object5opCmpFC6ObjectZi chello.obj(chello) Error 42: Symbol Undefined _D6object6Object6toHashFZk chello.obj(chello) Error 42: Symbol Undefined _D6object6Object8toStringFZAa chello.obj(chello) Error 42: Symbol Undefined _D6object6Object5printFZv chello.obj(chello) Error 42: Symbol Undefined __Class_3std1c7windows3com9ComObject chello.obj(chello) Error 42: Symbol Undefined __vtbl_9ClassInfo chello.obj(chello) Error 42: Symbol Undefined __Interface_3std1c7windows3com8IUnknown OPTLINK : Warning 134: No Start Address --- errorlevel 11 Another example, winsamp.d: parse winsamp semantic winsamp semantic2 winsamp semantic3 winsamp code winsamp generating code for function 'WindowProc' generating code for function 'doit' generating code for function 'WinMain' c:\dm\bin\link.exe winsamp,,,user32+kernel32/co/noi; OPTLINK (R) for Win32 Release 7.50B1 Copyright (C) Digital Mars 1989 - 2001 All Rights Reserved winsamp.obj(winsamp) Error 42: Symbol Undefined _SelectObject@8 winsamp.obj(winsamp) Error 42: Symbol Undefined _SetTextAlign@8 winsamp.obj(winsamp) Error 42: Symbol Undefined _TextOutA@20 winsamp.obj(winsamp) Error 42: Symbol Undefined _CreateFontA@56 --- errorlevel 4 Is this the fault of the linker/compiler or am I missing something here? :/ PS: I get the same errors when I try to compile and link the examples manually, so it's not the fault of my IDE. PPS: All non-windows examples, like for example dhry.d, compile and link just fine. |
November 23, 2004 Re: Unable to link Windows examples | ||||
---|---|---|---|---|
| ||||
Posted in reply to Blackspawn | In article <cnvc4h$lm1$1@digitaldaemon.com>, Blackspawn says... >winsamp.obj(winsamp) > Error 42: Symbol Undefined _SelectObject@8 >winsamp.obj(winsamp) > Error 42: Symbol Undefined _SetTextAlign@8 >winsamp.obj(winsamp) > Error 42: Symbol Undefined _TextOutA@20 >winsamp.obj(winsamp) > Error 42: Symbol Undefined _CreateFontA@56 > >--- errorlevel 4 > >Is this the fault of the linker/compiler or am I missing something here? :/ > > >PS: I get the same errors when I try to compile and link the examples manually, so it's not the fault of my IDE. > >PPS: All non-windows examples, like for example dhry.d, compile and link just fine. It sounds like you're not compiling and linking with the right options. For example with dserver you need to add "chello.obj uuid.lib ole32.lib advapi32.lib kernel32.lib user32.lib" to compile command at the command prompt. I'm not sure if you can do this from your syntax editor. There are some hints in \samples\d\all.sh. Also compile htmlget like this: dmd htmlget.d ws2_32.lib jcc7 |
November 23, 2004 Re: Unable to link Windows examples | ||||
---|---|---|---|---|
| ||||
Posted in reply to J C Calvarese | J C Calvarese wrote:
> It sounds like you're not compiling and linking with the right options. For
> example with dserver you need to add "chello.obj uuid.lib ole32.lib advapi32.lib
> kernel32.lib user32.lib" to compile command at the command prompt. I'm not sure
> if you can do this from your syntax editor.
>
> There are some hints in \samples\d\all.sh.
>
Well, I have also tried to execute \dmd\samples\d\run.bat which compiles and links all examples automatically by running all.sh, but all the resulting .exe files are invalid, too...
|
November 23, 2004 Re: Unable to link Windows examples | ||||
---|---|---|---|---|
| ||||
Posted in reply to Blackspawn | Blackspawn wrote:
> J C Calvarese wrote:
>
>> It sounds like you're not compiling and linking with the right options. For
>> example with dserver you need to add "chello.obj uuid.lib ole32.lib advapi32.lib
>> kernel32.lib user32.lib" to compile command at the command prompt. I'm not sure
>> if you can do this from your syntax editor.
>>
>> There are some hints in \samples\d\all.sh.
>>
>
> Well, I have also tried to execute \dmd\samples\d\run.bat which compiles and links all examples automatically by running all.sh, but all the resulting .exe files are invalid, too...
Correction, the non-windows examples compile and link correctly, while the windows examples are not linked at all...
|
November 23, 2004 Re: Unable to link Windows examples | ||||
---|---|---|---|---|
| ||||
Posted in reply to Blackspawn | On Tue, 23 Nov 2004 18:14:27 +0100, Blackspawn <a@b.com> wrote: > Blackspawn wrote: >> J C Calvarese wrote: >> >>> It sounds like you're not compiling and linking with the right options. For >>> example with dserver you need to add "chello.obj uuid.lib ole32.lib advapi32.lib >>> kernel32.lib user32.lib" to compile command at the command prompt. I'm not sure >>> if you can do this from your syntax editor. >>> >>> There are some hints in \samples\d\all.sh. >>> >> >> Well, I have also tried to execute \dmd\samples\d\run.bat which compiles and links all examples automatically by running all.sh, but all the resulting .exe files are invalid, too... > > Correction, the non-windows examples compile and link correctly, while the windows examples are not linked at all... I gave run.bat a go, it contains the following: \dmd\bin\shell all.sh which I changed to ..\..\bin\shell all.sh as my dmd dir is not at the root. Then I edited all.sh and changed DMD=\dmd\bin\dmd to DMD=dmd as my dmd dir is not at the root and dmd.exe is in my PATH so will execute without a path. Running it gives the following executables: 24/11/2004 12:16 p.m. 81,436 sieve.exe 24/11/2004 12:16 p.m. 89,628 pi.exe 24/11/2004 12:16 p.m. 86,556 dhry.exe 24/11/2004 12:16 p.m. 82,972 wc.exe 25/07/2004 12:50 a.m. 103,452 htmlget.exe I noticed errors for the 'dserver' and 'dclient' programs, the dserver errors were at first: dserver.d(254): C style cast deprecated, use cast(LPOLESTR)(szID) dserver.d(301): C style cast deprecated, use cast(LPOLESTR)(szID) i.e. old style casts, which I then fixed, next error: dserver.d(80): class chello.CHello member this is not accessible looking at CHello (in chello.d) I see the constructor is inside a 'protected' block. I do not know what the correct solution here is as I do not know what is achieved by putting a constructor in a protected block. Perhaps someone else has a solution/idea? Regan -- Using M2, Opera's revolutionary e-mail client: http://www.opera.com/m2/ |
November 23, 2004 Re: Unable to link Windows examples | ||||
---|---|---|---|---|
| ||||
Posted in reply to Blackspawn | Blackspawn wrote: > Blackspawn wrote: > >> J C Calvarese wrote: >> >>> It sounds like you're not compiling and linking with the right options. For >>> example with dserver you need to add "chello.obj uuid.lib ole32.lib advapi32.lib >>> kernel32.lib user32.lib" to compile command at the command prompt. I'm not sure >>> if you can do this from your syntax editor. >>> >>> There are some hints in \samples\d\all.sh. >>> >> >> Well, I have also tried to execute \dmd\samples\d\run.bat which compiles and links all examples automatically by running all.sh, but all the resulting .exe files are invalid, too... > > > Correction, the non-windows examples compile and link correctly, while the windows examples are not linked at all... Does winsamp work? Try to compile it like this (as the instructions within the code mention): dmd winsamp gdi32.lib winsamp.def It works for me. As Regan mentioned, apparently some of the programs have some obsolete code. Sorry about that. I guess we'll have to give Walter a hard time. -- Justin (a/k/a jcc7) http://jcc_7.tripod.com/d/ |
November 23, 2004 Re: Unable to link Windows examples | ||||
---|---|---|---|---|
| ||||
Posted in reply to Regan Heath | Regan Heath wrote: > On Tue, 23 Nov 2004 18:14:27 +0100, Blackspawn <a@b.com> wrote: > > I noticed errors for the 'dserver' and 'dclient' programs, the dserver errors were at first: > > dserver.d(254): C style cast deprecated, use cast(LPOLESTR)(szID) > dserver.d(301): C style cast deprecated, use cast(LPOLESTR)(szID) Arg! Didn't we already tell Walter about this months ago? > > i.e. old style casts, which I then fixed, next error: > > dserver.d(80): class chello.CHello member this is not accessible > > looking at CHello (in chello.d) I see the constructor is inside a 'protected' block. I do not know what the correct solution here is as I do not know what is achieved by putting a constructor in a protected block. > > Perhaps someone else has a solution/idea? Right. When I commented out the protect in chello.d (line 41), it worked. Maybe that is what it's supposed to be. Also, all.sh refers to a mysterious file called test.d that doesn't exist. Good grief! I'd think that testing the samples would be part of the testing regimen before each version of D is released... > > Regan > -- Justin (a/k/a jcc7) http://jcc_7.tripod.com/d/ |
November 23, 2004 Re: Unable to link Windows examples | ||||
---|---|---|---|---|
| ||||
Posted in reply to Regan Heath | Regan Heath wrote:
> Running it gives the following executables:
>
> 24/11/2004 12:16 p.m. 81,436 sieve.exe
> 24/11/2004 12:16 p.m. 89,628 pi.exe
> 24/11/2004 12:16 p.m. 86,556 dhry.exe
> 24/11/2004 12:16 p.m. 82,972 wc.exe
> 25/07/2004 12:50 a.m. 103,452 htmlget.exe
>
I also get als those files, except htmlget.exe. That one isn't even mentioned in my all.sh...
|
November 23, 2004 Re: Unable to link Windows examples | ||||
---|---|---|---|---|
| ||||
Posted in reply to J C Calvarese | J C Calvarese wrote: > Regan Heath wrote: > >> On Tue, 23 Nov 2004 18:14:27 +0100, Blackspawn <a@b.com> wrote: >> >> I noticed errors for the 'dserver' and 'dclient' programs, the dserver errors were at first: >> >> dserver.d(254): C style cast deprecated, use cast(LPOLESTR)(szID) >> dserver.d(301): C style cast deprecated, use cast(LPOLESTR)(szID) > > > Arg! Didn't we already tell Walter about this months ago? http://www.digitalmars.com/drn-bin/wwwnews?digitalmars.D/3416 (8 Jun 2004) I suppose he may have not have seen it because he's probably still behind in reading messages, and I guess it wasn't ever posted to the bugs newsgroup. -- Justin (a/k/a jcc7) http://jcc_7.tripod.com/d/ |
November 23, 2004 Re: Unable to link Windows examples | ||||
---|---|---|---|---|
| ||||
Posted in reply to J C Calvarese | J C Calvarese wrote:
> Does winsamp work?
>
> Try to compile it like this (as the instructions within the code mention):
>
> dmd winsamp gdi32.lib winsamp.def
>
> It works for me.
>
Yes, it's working. :)
|
Copyright © 1999-2021 by the D Language Foundation