RE: [opendx-dev] problem compiling import module under Windows

2005-12-15 Thread Andrew J. Dolgert
Hi David,

I think the problem is that dxexec.exe uses a different C runtime from
dll modules built with dxexec.lib and dxlite.lib. I used the C runtime
memory allocation hooks to see that I get crashes when AutoColor tries
to free memory allocated during MyConstruct (a Construct module
recompiled as a loadable dll).

The dependencies I see are the following:
dxexec.exe - C:\windows\system32\msvcrt.dll
MyConstruct.dll - links to
  dxlite.lib - Requires imports from Dll versions of C runtime
msvcrt.lib - which loads msvcrt71.dll or msvcrt80.dll.

There are two ways to fix this. One is to link dxexec.exe to the same
version of the C runtime that people have to use when they make loadable
dlls. The other is to separate all DXLite.lib functionality into a dll
which is called by both dxexec.exe and any loadable modules.

dxexec.exe - dxlite.dll - any crt it pleases
MyConstruct.dll - dxlite.dll - any crt it pleases

I think that's the key, but I'll talk with my peeps on the hallway to
see if there is some way around it.

Drew

-Original Message-
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of David
Thompson
Sent: Wednesday, December 14, 2005 5:54 PM
To: opendx2-dev@lists.berlios.de
Subject: RE: [opendx-dev] problem compiling import module under Windows

I've already seen where VS 2003 can't compile a file within OpenDX. 
I've reported the bug to Microsoft but never got anywhere with it. 
It's still there. The other thing I think I may be running into is 
that the compiler may be picking up headers from vc6 when it 
shouldn't be. I've thought about un-installing all the development 
environment and just using VS 2005 and see what happens. Will 
probably try this after I get the next version released.

I don't believe that I have any of the cygwin stuff creeping in--but 
I wouldn't guarantee it.

Please report if you figure it out.

David


RE: [opendx-dev] problem compiling import module under Windows

2005-12-15 Thread David Thompson
If you figure it out, can you give me some ideas how to fix it? I'm 
more than happy to try and get it all sorted out.


On a similar topic, I've got everything compiling with VS2003 (cl 
v13.10.3077). Everything seems to be working pretty well, except:


Our code links with BINMODE.OBJ to turn all reads and writes to 
binary. But now, the writes to stdout are in binary. From what I read 
on MSDN, this shouldn't happen (doesn't with vc 6 version), but it 
does with this compiler. Any idea how to fix it without having to add 
all the _fmode statements? I guess I could send a question to the VS 
team.


David


Hi David,

I think the problem is that dxexec.exe uses a different C runtime from
dll modules built with dxexec.lib and dxlite.lib. I used the C runtime
memory allocation hooks to see that I get crashes when AutoColor tries
to free memory allocated during MyConstruct (a Construct module
recompiled as a loadable dll).

The dependencies I see are the following:
dxexec.exe - C:\windows\system32\msvcrt.dll
MyConstruct.dll - links to
  dxlite.lib - Requires imports from Dll versions of C runtime
msvcrt.lib - which loads msvcrt71.dll or msvcrt80.dll.

There are two ways to fix this. One is to link dxexec.exe to the same
version of the C runtime that people have to use when they make loadable
dlls. The other is to separate all DXLite.lib functionality into a dll
which is called by both dxexec.exe and any loadable modules.

dxexec.exe - dxlite.dll - any crt it pleases
MyConstruct.dll - dxlite.dll - any crt it pleases

I think that's the key, but I'll talk with my peeps on the hallway to
see if there is some way around it.

Drew

-Original Message-
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of David
Thompson
Sent: Wednesday, December 14, 2005 5:54 PM
To: opendx2-dev@lists.berlios.de
Subject: RE: [opendx-dev] problem compiling import module under Windows

I've already seen where VS 2003 can't compile a file within OpenDX.
I've reported the bug to Microsoft but never got anywhere with it.
It's still there. The other thing I think I may be running into is
that the compiler may be picking up headers from vc6 when it
shouldn't be. I've thought about un-installing all the development
environment and just using VS 2005 and see what happens. Will
probably try this after I get the next version released.

I don't believe that I have any of the cygwin stuff creeping in--but
I wouldn't guarantee it.

Please report if you figure it out.

David



--
.
David L. Thompson   Visualization and Imagery Solutions, Inc.
mailto:[EMAIL PROTECTED]5515 Skyway Drive, Missoula, MT 59804
Phone : (406)756-7472


RE: [opendx-dev] problem compiling import module under Windows

2005-12-15 Thread Andrew J. Dolgert
Hi David,

If linking with binmode.obj fails, does setting the global _fmode =
_O_BINARY still work correctly? It should do the same thing. Neither
binmode.obj nor the _fmode global are supposed to affect stdout, stderr,
and stdin. That's a definite bug. You could set the default fmode to
binary but then execute

setmode( fileno( stdout ), _O_TEXT );
setmode( fileno( stdin  ), _O_TEXT );
setmode( fileno( stderr ), _O_TEXT );

I'm glad things are running. I recall doing a full build was a real
pain, so that's great.

Drew

-Original Message-
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of David
Thompson
Sent: Thursday, December 15, 2005 5:59 PM
To: opendx2-dev@lists.berlios.de
Subject: RE: [opendx-dev] problem compiling import module under Windows

If you figure it out, can you give me some ideas how to fix it? I'm 
more than happy to try and get it all sorted out.

On a similar topic, I've got everything compiling with VS2003 (cl 
v13.10.3077). Everything seems to be working pretty well, except:

Our code links with BINMODE.OBJ to turn all reads and writes to 
binary. But now, the writes to stdout are in binary. From what I read 
on MSDN, this shouldn't happen (doesn't with vc 6 version), but it 
does with this compiler. Any idea how to fix it without having to add 
all the _fmode statements? I guess I could send a question to the VS 
team.

David
 


RE: [opendx-dev] problem compiling import module under Windows

2005-12-15 Thread David Thompson
I've been playing around with it a bit. Linking with binmode.obj 
works, the problem is that stdout for some reason is writing out text 
in binary. I tried using the setmode route but it doesn't change. I'm 
wondering if for some reason something else is going on. Here is a 
snippet of the code


if (!_dxd_exRemoteSlave) {
char tmpbuf[80];
sprintf(tmpbuf,
  Memory cache will use %ld MB (%ld for small items, %ld for 
large)\n\n,

  ((large_size + small_size)  20),
  (small_size  20), (large_size  20));
write(fileno(stdout), tmpbuf, strlen(tmpbuf));
}

And the output is coming out as garbled.

Do you thing the sprintf might be expecting two byte characters?

David


Hi David,

If linking with binmode.obj fails, does setting the global _fmode =
_O_BINARY still work correctly? It should do the same thing. Neither
binmode.obj nor the _fmode global are supposed to affect stdout, stderr,
and stdin. That's a definite bug. You could set the default fmode to
binary but then execute

setmode( fileno( stdout ), _O_TEXT );
setmode( fileno( stdin  ), _O_TEXT );
setmode( fileno( stderr ), _O_TEXT );

I'm glad things are running. I recall doing a full build was a real
pain, so that's great.

Drew

-Original Message-
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of David
Thompson
Sent: Thursday, December 15, 2005 5:59 PM
To: opendx2-dev@lists.berlios.de
Subject: RE: [opendx-dev] problem compiling import module under Windows

If you figure it out, can you give me some ideas how to fix it? I'm
more than happy to try and get it all sorted out.

On a similar topic, I've got everything compiling with VS2003 (cl
v13.10.3077). Everything seems to be working pretty well, except:

Our code links with BINMODE.OBJ to turn all reads and writes to
binary. But now, the writes to stdout are in binary. From what I read
on MSDN, this shouldn't happen (doesn't with vc 6 version), but it
does with this compiler. Any idea how to fix it without having to add
all the _fmode statements? I guess I could send a question to the VS
team.

David




--
.
David L. Thompson   Visualization and Imagery Solutions, Inc.
mailto:[EMAIL PROTECTED]5515 Skyway Drive, Missoula, MT 59804
Phone : (406)756-7472