Release Build dependency on debug rt in vs7.1

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Release Build dependency on debug rt in vs7.1

rhfritz
I've downloaded pthreads-w32-2-8-0-release.exe and have built it in Release under vs7.1, letting VS7.1 import/convert the .dsw/.dsp into .sln/.vcproj.  While pthreadVC2.dll builds without errors or warnings, my application, also built in Release as part of the same solution, complains if the VS7.1 RT Debug DLL msvcr71d.dll is not present.

I've isolated the problem to pthreadVC2.dll when built in Release under vs7.1:
1) I substituted the vs7.1 built DLL with Pre-built.2\lib\pthreadVC2.dll and msvcr71d.dll is no longer required.  
2) I've substituted the vs7.1 built DLL with a VS6 built pthreadVC2.dll I built using the original .dsw/.dsp and again my application runs without complaint.  

I've looked into the .proj file and see that it is properly using NDEBUG.  
Can someone duplicate/explain how my DLL has acquired a dependency on msvcr71d.dll? For comparison purposes, my pthreadVC2.dll is 52kb when built in VS7.1.

The last peculiarity I've noticed is that Pre-built.2\lib\pthreadVC2.dll is 85kb in size, while the one I built in VS6 using the provided .dsw/.dsp is 44kb.  I would have expected them to be the same size.  This would imply that Pre-built was created using a different method.

Finally, has anyone played with the VS2010 beta to see what, if any, impact the multi-core support might have on this pthread code?

smime.p7s (6K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

RE: Release Build dependency on debug rt in vs7.1

rhfritz
I have built pthreadVC2.dll in Release under VS8.050727.  I let VS8 import and convert the .dsw/.dsp into .sln/.vcproj.  This version of the DLL is 30kb and does not require a debug RT dll to be present.

This issue would appear to be vs7.1 specific.

smime.p7s (6K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Release Build dependency on debug rt in vs7.1

Ross Johnson-2
In reply to this post by rhfritz
The pre-built pthreadVC2.dll is built using nmake and the Makefile
provided (the actual commandline would have been "nmake clean
VC-inlined"). I'm guessing the project file isn't inlining, which could
account for the larger size for the pre-built dll.

For comparison with the project build, if you build with "nmake" as
above you should find that the compile options are:-

/O2 /Ob2 /W3 /MD /nologo /I. /D_WIN32_WINNT=0x400 /DHAVE_CONFIG_H /DPTW32_BUILD_INLINED


Although there is a project file included in the sources it was
contributed and is not otherwise maintained. I use the commandline tools
for all building and testing of the dll because it makes the release
process more consistent across the different build environments.

Fritz, Robert H. CIV NAVAIR/5.1.2.1 2424,1,607 wrote:

> I've downloaded pthreads-w32-2-8-0-release.exe and have built it in Release under vs7.1, letting VS7.1 import/convert the .dsw/.dsp into .sln/.vcproj.  While pthreadVC2.dll builds without errors or warnings, my application, also built in Release as part of the same solution, complains if the VS7.1 RT Debug DLL msvcr71d.dll is not present.
>
> I've isolated the problem to pthreadVC2.dll when built in Release under vs7.1:
> 1) I substituted the vs7.1 built DLL with Pre-built.2\lib\pthreadVC2.dll and msvcr71d.dll is no longer required.  
> 2) I've substituted the vs7.1 built DLL with a VS6 built pthreadVC2.dll I built using the original .dsw/.dsp and again my application runs without complaint.  
>
> I've looked into the .proj file and see that it is properly using NDEBUG.  
> Can someone duplicate/explain how my DLL has acquired a dependency on msvcr71d.dll? For comparison purposes, my pthreadVC2.dll is 52kb when built in VS7.1.
>
> The last peculiarity I've noticed is that Pre-built.2\lib\pthreadVC2.dll is 85kb in size, while the one I built in VS6 using the provided .dsw/.dsp is 44kb.  I would have expected them to be the same size.  This would imply that Pre-built was created using a different method.
>
> Finally, has anyone played with the VS2010 beta to see what, if any, impact the multi-core support might have on this pthread code?
>  

Reply | Threaded
Open this post in threaded view
|

RE: Release Build dependency on debug rt in vs7.1

rhfritz
Ross,

Thanks for the response.  I both built it using nmake and incorporated the args below into the sln.  Inexplicably, somewhere along the line the debug dependency went away.  Probably something stupid I was doing.

I've built the DLL's using nmake and the IDE in vs6, 7, & 8.  The primary difference being that the makefile's explicit linkage to wsock32.dll (Winsock 1.0) carried through all nmakes while all the IDE's chose WS2_32.dll (Winsock 2.0).  Of course all builds selected their version specific RT dll.

Rob

-----Original Message-----
From: Ross Johnson [mailto:[hidden email]]
Sent: Friday, August 07, 2009 9:38 PM
To: Fritz, Robert H. CIV NAVAIR/5.1.2.1 2424,1,607
Cc: [hidden email]
Subject: Re: Release Build dependency on debug rt in vs7.1

The pre-built pthreadVC2.dll is built using nmake and the Makefile provided (the actual commandline would have been "nmake clean VC-inlined"). I'm guessing the project file isn't inlining, which could account for the larger size for the pre-built dll.

For comparison with the project build, if you build with "nmake" as above you should find that the compile options are:-

/O2 /Ob2 /W3 /MD /nologo /I. /D_WIN32_WINNT=0x400 /DHAVE_CONFIG_H /DPTW32_BUILD_INLINED


Although there is a project file included in the sources it was contributed and is not otherwise maintained. I use the commandline tools for all building and testing of the dll because it makes the release process more consistent across the different build environments.

Fritz, Robert H. CIV NAVAIR/5.1.2.1 2424,1,607 wrote:

> I've downloaded pthreads-w32-2-8-0-release.exe and have built it in Release under vs7.1, letting VS7.1 import/convert the .dsw/.dsp into .sln/.vcproj.  While pthreadVC2.dll builds without errors or warnings, my application, also built in Release as part of the same solution, complains if the VS7.1 RT Debug DLL msvcr71d.dll is not present.
>
> I've isolated the problem to pthreadVC2.dll when built in Release under vs7.1:
> 1) I substituted the vs7.1 built DLL with Pre-built.2\lib\pthreadVC2.dll and msvcr71d.dll is no longer required.  
> 2) I've substituted the vs7.1 built DLL with a VS6 built pthreadVC2.dll I built using the original .dsw/.dsp and again my application runs without complaint.  
>
> I've looked into the .proj file and see that it is properly using NDEBUG.  
> Can someone duplicate/explain how my DLL has acquired a dependency on msvcr71d.dll? For comparison purposes, my pthreadVC2.dll is 52kb when built in VS7.1.
>
> The last peculiarity I've noticed is that Pre-built.2\lib\pthreadVC2.dll is 85kb in size, while the one I built in VS6 using the provided .dsw/.dsp is 44kb.  I would have expected them to be the same size.  This would imply that Pre-built was created using a different method.
>
> Finally, has anyone played with the VS2010 beta to see what, if any, impact the multi-core support might have on this pthread code?
>  


smime.p7s (6K) Download Attachment