I have implemented a CMake way of handling this issue in the 1_8_cmake branch of the hdf5 svn repository.
In the root CMakeFiles.txt file I added an "include UserMacros.cmake" command that will load in an option and macro to change the flags to allow the use of /MT on windows. I also modified all the CMake code to enable a hook into the compile and link processes. The root UserMacros.cmake file is a placeholder for user-defined CMake code. The cmake code for the MT option is in the config/cmake folder under a new UserMacros folder in the file Windows_MT.cmake. Simply copy the contents of the Windows_MT.cmake file to the contents of the root UserMacros.cmake file, and enable the option. We would appreciate folks testing this out before we commit to the 1_8 branch. Allen On Monday, June 10, 2013 05:58:18 PM Dana Robinson wrote: Hi all, I stand corrected. I just created a test project and inspected the assembler for the output and it turns out that the CRT does share state when statically linked together. For example, this is what I get when I create a static library that calls free via a library function: foo_free: 0000000000000040: 48 89 4C 24 08 mov qword ptr [rsp+8],rcx 0000000000000045: 57 push rdi 0000000000000046: 48 83 EC 20 sub rsp,20h 000000000000004A: 48 8B FC mov rdi,rsp 000000000000004D: B9 08 00 00 00 mov ecx,8 0000000000000052: B8 CC CC CC CC mov eax,0CCCCCCCCh 0000000000000057: F3 AB rep stos dword ptr [rdi] 0000000000000059: 48 8B 4C 24 30 mov rcx,qword ptr [rsp+30h] 000000000000005E: 48 8B 4C 24 30 mov rcx,qword ptr [rsp+30h] *0000000000000063: E8 00 00 00 00 call free* 0000000000000068: 48 83 C4 20 add rsp,20h 000000000000006C: 5F pop rdi 000000000000006D: C3 ret It clearly just has a placeholder (highlighted line) that will be resolved when the final executable (dll or exe) is linked. As long as your application is a monolith, with no internal dlls at any level, the CRT issues should not exist. The linker will just copy in the static CRT code and all C library calls will resolve to that. Again, I stand corrected and I apologize for any confusion that I caused. I'll talk to Elena and Allen about what we can do to get this set up and document it. I'd still want it flagged as dangerous since I suspect it will burn a lot of people. Cheers, Dana
_______________________________________________ Hdf-forum is for HDF software users discussion. [email protected] http://lists.hdfgroup.org/mailman/listinfo/hdf-forum_lists.hdfgroup.org
