digitalmars.D - Please Help! Linker problem (me!)
- Scott Egan (28/28) May 02 2004 Hi,
- Phill (22/36) May 02 2004 I dont think its a problem with the linker, maybe you
- Scott Egan (13/42) May 03 2004 Thanks Phill.
- J C Calvarese (11/48) May 02 2004 If you have two files: main.d and imports.d, you probably need to put
- Scott Egan (8/56) May 03 2004 I'm using DIDE.
- Phill (9/11) May 03 2004 When you made the module with the struct in it, did
- Scott Egan (3/16) May 03 2004 Don't worry it's in the project (file new into project)
- J C Calvarese (15/93) May 03 2004 Sorry I was unclear, but I'm talking about a linker error. If both files...
- Scott Egan (9/102) May 04 2004 Thanks,
- J C Calvarese (5/13) May 04 2004 I'm glad to hear that.
Hi, In another thread I mentioned that I would convert my game to D. Well all was good until step 3 of 45672345. I looked at Walter's empire windows code and noticed that he wrapped the globals in a struct - so I did too. (This is when I decided that I had an issue with 'with'). Now here's where my lack of D savvy will show. When I went to refer to the struct in an other module I simply imported the module that the structure was declared in. It compiles but won't link. I get 'Error 42: Symbol Undefined _D4iced6globalS4iced7globals' in the importing obj module. I've tried every combination of export, extern I could think of; although I wouldn't have expected to need to. I also tried declaring the variable public, still no luck. Any thoughts would be appreciated. The structure definition and declaration are below. struct globals { int Score; bit Random; HDC hDCVid, hDCScrn, hDCMem; HINSTANCE Instant; HWND hWndStat, hWndEdit, hWndIce; char GameName[]; int Lives, Screen, Stands, CountDown, Diamonds, TimeOut, Loaded, xScr, yScr, yText, yChar, xChar, Width, Height; byte SCRNX, SCRNY, retX, retY, GoodX, GoodY, HIT; byte[64][64] Scrn; }; globals global;
May 02 2004
I dont think its a problem with the linker, maybe you have just overlooked something. Ive attached a simple example. Phill. "Scott Egan" <scotte tpg.com.aux> wrote in message news:c72drs$hiu$1 digitaldaemon.com...Hi, In another thread I mentioned that I would convert my game to D. Well all was good until step 3 of 45672345. I looked at Walter's empire windows code and noticed that he wrapped the globals in a struct - so I did too. (This is when I decided that I had an issue with 'with'). Now here's where my lack of D savvy will show. When I went to refer tothestruct in an other module I simply imported the module that the structure was declared in. It compiles but won't link. I get 'Error 42: Symbol Undefined _D4iced6globalS4iced7globals' in the importing obj module. I've tried every combination of export, extern I could think of; although I wouldn't have expected to need to. I alsotrieddeclaring the variable public, still no luck. Any thoughts would be appreciated.begin 666 modtest.zip M$#TGD M2(GS?X? 4M;$78K/1A-NDU%D)EQ#XK+F.%ZU 2_BYAW?2W^I_P[!ZW&[?4R$ M3-. AU)=7)T0UF]\0ZR/&^4S[,QKKW+I&DHFD^ 'P9G M'6YZUN'$G:XUS$9 MHC .0NU[W ```+T!```)``````````$`( ````````!M;V1T97-T+F102P$" M% L4````" "IH*(P!VHXF3$````S````! `````````!`" ````%`0``9VQB 9;"YD4$L%! `````"``(`:P```%H!```````` ` end
May 02 2004
Thanks Phill. I got yours working even after I moved the 'globals g' definition to the glbl.d file. The only diference I noted was that you used the module statement at the top of the glbl.d file. So I included it at the top of my file and the problem went away. Now....why?!!! The reat of my files are imported OK without module statements. I thought modulename = filename (less .d) if not specified. Any thoughts? "Phill" <phill pacific.net.au> wrote in message news:c72hbg$mof$1 digitaldaemon.com...I dont think its a problem with the linker, maybe you have just overlooked something. Ive attached a simple example. Phill. "Scott Egan" <scotte tpg.com.aux> wrote in message news:c72drs$hiu$1 digitaldaemon.com...allHi, In another thread I mentioned that I would convert my game to D. Wellstructurewas good until step 3 of 45672345. I looked at Walter's empire windows code and noticed that he wrapped the globals in a struct - so I did too. (This is when I decided that I had an issue with 'with'). Now here's where my lack of D savvy will show. When I went to refer tothestruct in an other module I simply imported the module that thewas declared in. It compiles but won't link. I get 'Error 42: Symbol Undefined _D4iced6globalS4iced7globals' in the importing obj module. I've tried every combination of export, extern I could think of; although I wouldn't have expected to need to. I alsotrieddeclaring the variable public, still no luck. Any thoughts would be appreciated.
May 03 2004
"Scott Egan" <scotte tpg.com.aux> wrote in message news:c75aun$1qhc$1 digitaldaemon.com...Thanks Phill. I got yours working even after I moved the 'globals g' definition to the glbl.d file. The only diference I noted was that you used the module statement at thetopof the glbl.d file. So I included it at the top of my file and the problem went away. Now....why?!!! The reat of my files are imported OK without module statements. I thought modulename = filename (less .d) if not specified. Any thoughts?I dont know, I only put that there to look fancy lol it works either way with mine. I am not familiar with the way that the 'module' thing works, or whether you have to compile it in a similar way to Java's packages. Im waiting for Mathew's book. :o)) Or a tutorial to be written. I also use DIDE. See my other post, maybe it can help. Phill.
May 03 2004
"Phill" <phill pacific.net.au> wrote in message news:c75bcl$1r05$1 digitaldaemon.com..."Scott Egan" <scotte tpg.com.aux> wrote in message news:c75aun$1qhc$1 digitaldaemon.com...What book? What're you talking about. ;) (As soon as I can get DTL done and out of the way, then maybe I can pay attention to some other, more potentially lucrative matters ... <G>)Thanks Phill. I got yours working even after I moved the 'globals g' definition to the glbl.d file. The only diference I noted was that you used the module statement at thetopof the glbl.d file. So I included it at the top of my file and the problem went away. Now....why?!!! The reat of my files are imported OK without module statements. I thought modulename = filename (less .d) if not specified. Any thoughts?I dont know, I only put that there to look fancy lol it works either way with mine. I am not familiar with the way that the 'module' thing works, or whether you have to compile it in a similar way to Java's packages. Im waiting for Mathew's book. :o))Or a tutorial to be written. I also use DIDE. See my other post, maybe it can help.
May 07 2004
"Matthew" <matthew.hat stlsoft.dot.org> wrote in message news:c7hdi7$29ok$1 digitaldaemon.com..."Phill" <phill pacific.net.au> wrote in message news:c75bcl$1r05$1 digitaldaemon.com...the"Scott Egan" <scotte tpg.com.aux> wrote in message news:c75aun$1qhc$1 digitaldaemon.com...Thanks Phill. I got yours working even after I moved the 'globals g' definition totheglbl.d file. The only diference I noted was that you used the module statement atthoughts?topof the glbl.d file. So I included it at the top of my file and the problem went away. Now....why?!!! The reat of my files are imported OK without module statements. I thought modulename = filename (less .d) if not specified. AnyattentionWhat book? What're you talking about. ;) (As soon as I can get DTL done and out of the way, then maybe I can payI dont know, I only put that there to look fancy lol it works either way with mine. I am not familiar with the way that the 'module' thing works, or whether you have to compile it in a similar way to Java's packages. Im waiting for Mathew's book. :o))to some other, more potentially lucrative matters ... <G>)Cant wait! Ofcourse you would include a chapter(at least) on the DTL? I have another OT question for you. I have read articles by you a Walter in Dr Dobbs. If one was to subscribe to a journal, which would you say would more likely have the odd D article in it? (Not including the D journal, because who knows when that will surface.) Thanks! Phill.
May 07 2004
"Phill" <phill pacific.net.au> wrote in message news:c7htjo$3057$1 digitaldaemon.com..."Matthew" <matthew.hat stlsoft.dot.org> wrote in message news:c7hdi7$29ok$1 digitaldaemon.com...That's for sure. (Of course, nothing's sorted on the D book yet.) FYI, I'm actually thinking that of discussing other STL incarnations in other languages in my next book - "Extended STL". This'll fall naturally out of the Ranges concept work, since it spans both C++ and D, and I've also been chatting to some people about STL-like things in some other languages, but that's very early stuff."Phill" <phill pacific.net.au> wrote in message news:c75bcl$1r05$1 digitaldaemon.com...the"Scott Egan" <scotte tpg.com.aux> wrote in message news:c75aun$1qhc$1 digitaldaemon.com...Thanks Phill. I got yours working even after I moved the 'globals g' definition totheglbl.d file. The only diference I noted was that you used the module statement atthoughts?topof the glbl.d file. So I included it at the top of my file and the problem went away. Now....why?!!! The reat of my files are imported OK without module statements. I thought modulename = filename (less .d) if not specified. AnyattentionWhat book? What're you talking about. ;) (As soon as I can get DTL done and out of the way, then maybe I can payI dont know, I only put that there to look fancy lol it works either way with mine. I am not familiar with the way that the 'module' thing works, or whether you have to compile it in a similar way to Java's packages. Im waiting for Mathew's book. :o))to some other, more potentially lucrative matters ... <G>)Cant wait! Ofcourse you would include a chapter(at least) on the DTL?I have another OT question for you. I have read articles by you a Walter in Dr Dobbs.To the best of my knowledge, so far we've had the following so far: WB: "The D Programming Language", DDJ, Feb 2002 Special Online Supplement, Fall 2003 MW: "Identity and Equality: Syntax and Semantics", CUJ, October 2003 WB + MW: "Collection Enumeration: Loops, Iterators and Nested Functions", DDJ, March 2004 WB: "Nested Functions", CUJ, May 2004 (I've also got a couple of Tech Tips in with DDJ that pertain to D which may see the light of day sometime over the next 6-12 months.)If one was to subscribe to a journal, which would you say would more likely have the odd D article in it?Despite the distribution shown above, it's far more likely that we'll be doing more for Dr Dobb's than CUJ. In fact, we're planning to make a few proposals very soon, so I would hope you'd get some D-value out of a year's subscription to DDJ if you made it now. ;) But they're both great mags, so it depends on how much C++ vs everything-else you need.(Not including the D journal, because who knows when that will surface.)Yeah, there are only so many hours in the day. Plus, for me, I've been living on thin air and shoe leather for the last 18 months - that's the romantic life of the penurious author <g> - so I favour submissions to paying journals when I can. Once I'm back in real work, I may well feel more than generously inclined towards TDJ, and aim my D submissions there.
May 07 2004
"Matthew" <matthew.hat stlsoft.dot.org> wrote in message news:c7humu$31jj$1 digitaldaemon.com..."Phill" <phill pacific.net.au> wrote in message news:c7htjo$3057$1 digitaldaemon.com...to"Matthew" <matthew.hat stlsoft.dot.org> wrote in message news:c7hdi7$29ok$1 digitaldaemon.com..."Phill" <phill pacific.net.au> wrote in message news:c75bcl$1r05$1 digitaldaemon.com..."Scott Egan" <scotte tpg.com.aux> wrote in message news:c75aun$1qhc$1 digitaldaemon.com...Thanks Phill. I got yours working even after I moved the 'globals g' definitionattheglbl.d file. The only diference I noted was that you used the module statementmodulethetopof the glbl.d file. So I included it at the top of my file and the problem went away. Now....why?!!! The reat of my files are imported OK withoutpaythoughts?statements. I thought modulename = filename (less .d) if not specified. AnyWhat book? What're you talking about. ;) (As soon as I can get DTL done and out of the way, then maybe I canI dont know, I only put that there to look fancy lol it works either way with mine. I am not familiar with the way that the 'module' thing works, or whether you have to compile it in a similar way to Java's packages. Im waiting for Mathew's book. :o))otherattentionThat's for sure. (Of course, nothing's sorted on the D book yet.) FYI, I'm actually thinking that of discussing other STL incarnations into some other, more potentially lucrative matters ... <G>)Cant wait! Ofcourse you would include a chapter(at least) on the DTL?languages in my next book - "Extended STL". This'll fall naturally out oftheRanges concept work, since it spans both C++ and D, and I've also beenchattingto some people about STL-like things in some other languages, but that'sveryearly stuff.WDN,I have another OT question for you. I have read articles by you a Walter in Dr Dobbs.To the best of my knowledge, so far we've had the following so far: WB: "The D Programming Language", DDJ, Feb 2002Special Online Supplement, Fall 2003 MW: "Identity and Equality: Syntax and Semantics", CUJ, October 20032004WB + MW: "Collection Enumeration: Loops, Iterators and Nested Functions",DDJ,March 2004 WB: "Nested Functions", CUJ, May 2004 (I've also got a couple of Tech Tips in with DDJ that pertain to D whichmay seethe light of day sometime over the next 6-12 months.)likelyIf one was to subscribe to a journal, which would you say would moredoinghave the odd D article in it?Despite the distribution shown above, it's far more likely that we'll bemore for Dr Dobb's than CUJ. In fact, we're planning to make a fewproposals verysoon, so I would hope you'd get some D-value out of a year's subscriptionto DDJif you made it now. ;) But they're both great mags, so it depends on how much C++ vseverything-else youneed.living on(Not including the D journal, because who knows when that will surface.)Yeah, there are only so many hours in the day. Plus, for me, I've beenthin air and shoe leather for the last 18 months - that's the romanticlife ofthe penurious author <g> - so I favour submissions to paying journals whenI can.Once I'm back in real work, I may well feel more than generously inclinedtowardsTDJ, and aim my D submissions there.Thanks Mathew! DDJ it shall be then. Phill.
May 08 2004
Scott Egan wrote:Hi, In another thread I mentioned that I would convert my game to D. Well all was good until step 3 of 45672345. I looked at Walter's empire windows code and noticed that he wrapped the globals in a struct - so I did too. (This is when I decided that I had an issue with 'with'). Now here's where my lack of D savvy will show. When I went to refer to the struct in an other module I simply imported the module that the structure was declared in. It compiles but won't link. I get 'Error 42: Symbol Undefined _D4iced6globalS4iced7globals' in the importing obj module. I've tried every combination of export, extern I could think of; although I wouldn't have expected to need to. I also tried declaring the variable public, still no luck. Any thoughts would be appreciated. The structure definition and declaration are below. struct globals { int Score; bit Random; HDC hDCVid, hDCScrn, hDCMem; HINSTANCE Instant; HWND hWndStat, hWndEdit, hWndIce; char GameName[]; int Lives, Screen, Stands, CountDown, Diamonds, TimeOut, Loaded, xScr, yScr, yText, yChar, xChar, Width, Height; byte SCRNX, SCRNY, retX, retY, GoodX, GoodY, HIT; byte[64][64] Scrn; }; globals global;If you have two files: main.d and imports.d, you probably need to put both of them in the compile line: dmd main.d imports.d I'm guessing this will solve your problem. Another way of solving this problem is to compile each separately: dmd imports.d -c dmd main.d imports.obj -- Justin http://jcc_7.tripod.com/d/
May 02 2004
I'm using DIDE. It compiles fine, I just get a linker error. "J C Calvarese" <jcc7 cox.net> wrote in message news:c73aoq$1s63$1 digitaldaemon.com...Scott Egan wrote:allHi, In another thread I mentioned that I would convert my game to D. Wellthewas good until step 3 of 45672345. I looked at Walter's empire windows code and noticed that he wrapped the globals in a struct - so I did too. (This is when I decided that I had an issue with 'with'). Now here's where my lack of D savvy will show. When I went to refer tostructurestruct in an other module I simply imported the module that thetriedwas declared in. It compiles but won't link. I get 'Error 42: Symbol Undefined _D4iced6globalS4iced7globals' in the importing obj module. I've tried every combination of export, extern I could think of; although I wouldn't have expected to need to. I alsodeclaring the variable public, still no luck. Any thoughts would be appreciated. The structure definition and declaration are below. struct globals { int Score; bit Random; HDC hDCVid, hDCScrn, hDCMem; HINSTANCE Instant; HWND hWndStat, hWndEdit, hWndIce; char GameName[]; int Lives, Screen, Stands, CountDown, Diamonds, TimeOut, Loaded, xScr, yScr, yText, yChar, xChar, Width, Height; byte SCRNX, SCRNY, retX, retY, GoodX, GoodY, HIT; byte[64][64] Scrn; }; globals global;If you have two files: main.d and imports.d, you probably need to put both of them in the compile line: dmd main.d imports.d I'm guessing this will solve your problem. Another way of solving this problem is to compile each separately: dmd imports.d -c dmd main.d imports.obj -- Justin http://jcc_7.tripod.com/d/
May 03 2004
"Scott Egan" <scotte tpg.com.aux> wrote in message news:c759sl$1onr$1 digitaldaemon.com...I'm using DIDE. It compiles fine, I just get a linker error.When you made the module with the struct in it, did you go: File-> New File Into Project or just File-> New ? Phill
May 03 2004
Don't worry it's in the project (file new into project) "Phill" <phill pacific.net.au> wrote in message news:c75b29$1qlt$1 digitaldaemon.com..."Scott Egan" <scotte tpg.com.aux> wrote in message news:c759sl$1onr$1 digitaldaemon.com...I'm using DIDE. It compiles fine, I just get a linker error.When you made the module with the struct in it, did you go: File-> New File Into Project or just File-> New ? Phill
May 03 2004
Scott Egan wrote:I'm using DIDE.Do you have a command line? Have you tried it?It compiles fine, I just get a linker error.Sorry I was unclear, but I'm talking about a linker error. If both files aren't compiled, I don't think it will link. Your problem might be elsewhere, but without entire files I can only guess what the problem is. If you haven't got it to work yet, you have some options: 1) Post the whole files of source code so that the rest of us aren't fumbling around in the dark. 2) Try compiling at the command line. Or by using a batch file. I have nothing against using DIDE; I use it all the time for editing files. But that doesn't prevent me from using the commmand line, batch files, or makefiles. I'm flexible."J C Calvarese" <jcc7 cox.net> wrote in message news:c73aoq$1s63$1 digitaldaemon.com...-- Justin http://jcc_7.tripod.com/d/Scott Egan wrote:allHi, In another thread I mentioned that I would convert my game to D. Wellthewas good until step 3 of 45672345. I looked at Walter's empire windows code and noticed that he wrapped the globals in a struct - so I did too. (This is when I decided that I had an issue with 'with'). Now here's where my lack of D savvy will show. When I went to refer tostructurestruct in an other module I simply imported the module that thetriedwas declared in. It compiles but won't link. I get 'Error 42: Symbol Undefined _D4iced6globalS4iced7globals' in the importing obj module. I've tried every combination of export, extern I could think of; although I wouldn't have expected to need to. I alsodeclaring the variable public, still no luck. Any thoughts would be appreciated. The structure definition and declaration are below. struct globals { int Score; bit Random; HDC hDCVid, hDCScrn, hDCMem; HINSTANCE Instant; HWND hWndStat, hWndEdit, hWndIce; char GameName[]; int Lives, Screen, Stands, CountDown, Diamonds, TimeOut, Loaded, xScr, yScr, yText, yChar, xChar, Width, Height; byte SCRNX, SCRNY, retX, retY, GoodX, GoodY, HIT; byte[64][64] Scrn; }; globals global;If you have two files: main.d and imports.d, you probably need to put both of them in the compile line: dmd main.d imports.d I'm guessing this will solve your problem. Another way of solving this problem is to compile each separately: dmd imports.d -c dmd main.d imports.obj -- Justin http://jcc_7.tripod.com/d/
May 03 2004
Thanks, after looking at Phills source, I noticed that the importeded module had a specific module statement, so I included on in mine. That fixed the problem. All files were compiling and the only thing I can thing of is that I named the file in uppercase. "J C Calvarese" <jcc7 cox.net> wrote in message news:c77ap6$1r4g$1 digitaldaemon.com...Scott Egan wrote:theI'm using DIDE.Do you have a command line? Have you tried it?It compiles fine, I just get a linker error.Sorry I was unclear, but I'm talking about a linker error. If both files aren't compiled, I don't think it will link. Your problem might be elsewhere, but without entire files I can only guess what the problem is. If you haven't got it to work yet, you have some options: 1) Post the whole files of source code so that the rest of us aren't fumbling around in the dark. 2) Try compiling at the command line. Or by using a batch file. I have nothing against using DIDE; I use it all the time for editing files. But that doesn't prevent me from using the commmand line, batch files, or makefiles. I'm flexible."J C Calvarese" <jcc7 cox.net> wrote in message news:c73aoq$1s63$1 digitaldaemon.com...Scott Egan wrote:allHi, In another thread I mentioned that I would convert my game to D. Wellwas good until step 3 of 45672345. I looked at Walter's empire windows code and noticed that he wrapped-- Justin http://jcc_7.tripod.com/d/theglobals in a struct - so I did too. (This is when I decided that I had an issue with 'with'). Now here's where my lack of D savvy will show. When I went to refer tostructurestruct in an other module I simply imported the module that thetriedwas declared in. It compiles but won't link. I get 'Error 42: Symbol Undefined _D4iced6globalS4iced7globals' in the importing obj module. I've tried every combination of export, extern I could think of; although I wouldn't have expected to need to. I alsodeclaring the variable public, still no luck. Any thoughts would be appreciated. The structure definition and declaration are below. struct globals { int Score; bit Random; HDC hDCVid, hDCScrn, hDCMem; HINSTANCE Instant; HWND hWndStat, hWndEdit, hWndIce; char GameName[]; int Lives, Screen, Stands, CountDown, Diamonds, TimeOut, Loaded, xScr, yScr, yText, yChar, xChar, Width, Height; byte SCRNX, SCRNY, retX, retY, GoodX, GoodY, HIT; byte[64][64] Scrn; }; globals global;If you have two files: main.d and imports.d, you probably need to put both of them in the compile line: dmd main.d imports.d I'm guessing this will solve your problem. Another way of solving this problem is to compile each separately: dmd imports.d -c dmd main.d imports.obj -- Justin http://jcc_7.tripod.com/d/
May 04 2004
Scott Egan wrote:Thanks, after looking at Phills source, I noticed that the importeded module had a specific module statement, so I included on in mine. That fixed the problem. All files were compiling and the only thing I can thing of is that I named the file in uppercase.I'm glad to hear that. -- Justin http://jcc_7.tripod.com/d/
May 04 2004