This is the mail archive of the
pthreads-win32@sourceware.org
mailing list for the pthreas-win32 project.
Re: Release Build dependency on debug rt in vs7.1
- From: Ross Johnson <Ross dot Johnson at homemail dot com dot au>
- To: "Fritz, Robert H. CIV NAVAIR/5.1.2.1 2424,1,607" <robert dot fritz at navy dot mil>
- Cc: pthreads-win32 at sourceware dot org
- Date: Sat, 08 Aug 2009 11:38:15 +1000
- Subject: Re: Release Build dependency on debug rt in vs7.1
- References: <0FD193C7681BE544BC2A4DF53A1E9A9304112982@naeapaxrez05.nadsusea.nads.navy.mil>
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?