|
From: Luigi B. <lui...@gm...> - 2008-09-03 21:28:49
|
Hi all, I've just answered a poor soul on quantlib-users that asked about the difference between the various VC++ configurations we've defined. A few thoughts: First: the nomenclature is cryptic. It's not obvious that CRTDLL stands for "common runtime dll." We should clarify the names. Second, and perhaps most important: there's a mismatch between what we call release and what the default is for VC++ projects. If one asks for a new project, VC++ creates one with a Debug and a Release configuration. Unfortunately, they don't correspond to what we call release. If a user has compiled QuantLib in Release mode and tries to link it to its new application, he'll have an unexpected linking error. What VC++ 7 calls "Release" is what we call "Release SingleThread"; what VC++ 8 and 9 calls "Release" is what we call "Release CRTDLL". Needless to say, I'd like to fix this in future releases. For VC++ 8 and 9, I'd call "Release" the default configuration (crtdll) and something like "Release (static runtime)" the current Release. Well, actually, I'm not even sure that I'd leave multiple configurations instead of just Debug/Release; on the one hand, they're confusing for most users, and on the other hand, a user that needs a particular runtime is likely to know what settings to change to obtain it. We can talk about this; at the very least, I'd switch the names. For VC++ 7, I'm not so sure. For uniformity, I'd call Release what VC+ + calls Release, i.e., the single-thread configuration. But doing so, we'd lose uniformity between VC++ versions; and I'm also concerned about QuantLibXL---Eric, does it support single-thread mode, or does it require the multi-threaded runtime? If the latter, we might want to use the crtdll configuration as default. Thought anyone? Later, Luigi |