Date: Sat, 31 Oct 1998 23:37:56 -0500 From: Pierre Beaulieu Subject: Re: Djgpp-Compiler To: djgpp AT delorie DOT com Message-id: <004b01be0551$7faebb00$aaa960cf@default> MIME-version: 1.0 X-Mailer: Microsoft Outlook Express 4.72.3155.0 Content-type: MULTIPART/ALTERNATIVE; BOUNDARY="Boundary_(ID_9ASZzZ0uK5IM1R/wv4c+sA)" X-MSMail-Priority: Normal X-MimeOLE: Produced By Microsoft MimeOLE V4.72.3155.0 X-Priority: 3 Reply-To: djgpp AT delorie DOT com This is a multi-part message in MIME format. --Boundary_(ID_9ASZzZ0uK5IM1R/wv4c+sA) Content-type: text/plain; charset=iso-8859-1 Content-transfer-encoding: quoted-printable I had a similar problem (probably it is the same) on the NT 4.0 = platform. Here is what I suggest you to do in order to fix it: 1) Remove evrything related to DJGPP from your system. 2) Unpack/unzip the DJGPP package with a utility that will generate = files with 8 characters long names and 3 characters long extension. 3) Once this is done, go under ...\DIGPP\LANG\CXX. There, you will find = a bunch of include files. These files are used by the C++ compiler. It = will be necessary to edit each of these files and modify the #include = directives in such a way that every time you will encounter an #include = directive containing the name of a file that is longuer than 8 = characters, you will replace it by its 8 characters conter part. To = illustrate that, let say we have the following #include statement: #include Once modified, it will look like this: #include It is necessary to do that since the name of the file streambuf.h has = been truncated in step 2). If you follow these steps, I am pretty sure you will fix your problem. = By the way, part of that solution come from DJ Delorie himself... Good luck, Pierre Beaulieu -----Original Message----- From: Christian Hofrichter Newsgroups: comp.os.msdos.djgpp To: djgpp AT delorie DOT com Date: Saturday, October 31, 1998 2:24 PM Subject: Djgpp-Compiler =20 =20 My version: Rhide 1.4=20 Djgpp 2.01=20 First Problem:=20 When I want to link my C-programs, I get the error message under DOS = :=20 ld.exe: cannot open -lstdcx: No such file or directory (ENOENT)=20 although I followed the instuctions, listed in the problems.txt. But = under Windows 95 everthing works fine. What did I do=20 wrong ?=20 Second Problem:=20 Under Borland C++ I could use the Pseudo-Registers to print, = calculate and manipulate the values of the=20 CPU-Registers. But now I only have the Registers, defined in the = UNION REGS, that means when I want to print a=20 Register-value which I have manipulated before with the inline = assembler, the Pseudo-Registers are not updated. They=20 will only be updated when an interrupt is used. So what can I do ? = Do I really have to copy the value of the Registers in a=20 variable and print the variable instead of the Registers ?=20 Third Problem:=20 In Real-Mode I could move a block of memory by storing the values of = the Segements in the ES and DS Register, and=20 the Offset in the DI and SI Register. What do I have to do, to move = a block of memory in the protected-mode (in=20 assembler) ? Do I need to store the selectors in one of these = Registers ?=20 Do the Djgpp - C++ - Copy - Routines move 4 bytes at one time or = only 1 or 2 byte(s) ? Can I improve the=20 performance by using the Fat Ds Method when I copy memory-blocks, or = do this method only make sense when I=20 want to change, read or write the bytes in the memory ? I have to = know this because of my Vesa-Functions.=20 --Boundary_(ID_9ASZzZ0uK5IM1R/wv4c+sA) Content-type: text/html; charset=iso-8859-1 Content-transfer-encoding: quoted-printable
I had a similar problem (probably it = is the=20 same) on the NT 4.0 platform. Here is what I suggest you to do in order = to fix=20 it:
 
1) Remove evrything related to DJGPP from your=20 system.
 
2) Unpack/unzip the DJGPP package with a utility = that will=20 generate files with 8 characters long names and 3 characters long=20 extension.
 
3) Once this is done, go under ...\DIGPP\LANG\CXX. = There, you=20 will find a bunch of include files. These files are used by the C++ = compiler. It=20 will be necessary to edit each of these files and modify the #include = directives=20 in such a way that every time you will encounter an #include directive=20 containing the name of a file that is longuer than 8 characters, you = will=20 replace it by its 8 characters conter part. To illustrate that, let say = we have=20 the following #include statement:
 
#include <streambuf.h>
 
Once modified, it will look like=20 this:
 
#include <streambu.h>
 
It is necessary to do that since the name of the = file=20 streambuf.h has been truncated in step 2).
 
If you follow these steps, I am = pretty sure you=20 will fix your problem. By the way, part of that solution come from DJ = Delorie=20 himself...
 
Good luck,
 
Pierre Beaulieu
-----Original = Message-----
From:=20 Christian Hofrichter <ChristianHofrichter AT gmx DOT de= >
Newsgroups:=20 comp.os.msdos.djgpp
To: djgpp AT delorie DOT com <djgpp AT delorie DOT com>
Date:=20 Saturday, October 31, 1998 2:24 PM
Subject:=20 Djgpp-Compiler

My version: Rhide 1.4=20 =
           =          =20 Djgpp 2.01=20

First Problem:
When I want to link my C-programs, I = get the=20 error message under DOS :
ld.exe: cannot open = -lstdcx:=20 No such file or directory (ENOENT)
although I followed the=20 instuctions, listed in the problems.txt. But under Windows 95=20 everthing works fine. What did I do
wrong ?=20

Second Problem:
Under Borland C++ I could use the=20 Pseudo-Registers to print, calculate and manipulate  the values = of the=20
CPU-Registers. But now I  only have the Registers, defined = in the=20 UNION REGS, that means when I want to print a
Register-value = which I=20 have manipulated before with the inline assembler, the = Pseudo-Registers are=20 not updated. They
will only be updated when an interrupt is = used. So=20 what can I do ? Do I really have to copy the value of the Registers = in a=20
variable and print the variable instead of the Registers ?=20

Third Problem:
In Real-Mode I could move a block of = memory by=20 storing the values of the Segements in the ES and DS Register, and =
the=20 Offset in the DI and SI Register. What do I have to do, to move a = block of=20 memory in the protected-mode (in
assembler) ?  Do I need to = store=20 the selectors in one of these Registers ?=20

Do the Djgpp - C++ - Copy - Routines move 4 bytes at one time or = only 1=20 or 2 byte(s) ? Can I improve the
performance by using the Fat Ds = Method=20 when I copy memory-blocks, or do  this method only make sense = when I=20
want to change, read or write the bytes in the memory ?  I = have to=20 know this because of my Vesa-Functions. =

--Boundary_(ID_9ASZzZ0uK5IM1R/wv4c+sA)--