Just wasted a day looking for a bug in my code only to find that it was due to the Composer-XE install adding the redist folder to my path. This caused my 32-bit linked custom dll to use the wrong versions of the Intel libraries (libmmd.dll, libiomp5md.dll and libifcoremd.dll) and generate incorrect results. After much testing I got the right set of libraries into the right place and my dll now returns the correct values again. Interestingly the 32 bit Composer-XE versions of the dll's give different answers while the older 11.1.060 versionsgive the right answers, so I'm really confused about what is going on.
My questions are:
1. Can I remove the Composer additions to the path to get my system back to the way it was before so that my installed programs and development environment (VB6)load the correct dll's and give the correct answers?
2. Is there a way that I can force the dll build process to load the correct versions into my custom dll so that mismatches between versions can be avoided, especially on client machines.
3. How can I find out which dll's are being loaded by my application? It loads my dll at run-time and the system (Windows Vista 64), presumably thenloads the dependant dll's. My recollection of the process isthat itchecks the application folder first and thensearchesthe path to locate the required dll's. As I did nothave the 11.1.060 versions in my application folder or path, the load process found thetheXE versions and these gave the wrong answers.I fixed the problem by copying the 11.1.060 versions directly into my application folder.
4. Is it possible thatthe load process might have grabbed the 64 bit versions of the dll's? I may be wrong about this as the XE 32 bitdll's are also in the path, but later in the search order. However, when I added the32 bit XE dll's to my application folder, it gave different answers to thethe two casesreferred to in Q3, and the answers were better (about the right order of magnitude), but still not correct.
5. It really worries me that I get the right answers using the 11.1.060 dll's, but not with the new XE versions (either by default search or by deliberate copying to the application folder). I spent a lot of time developing my custom dll to use multiple cores and it works really well and I have validated the results that it generates. So to have the answers change simply by installing theComposer-XE environment is frightening to say the least. I have recompiled my dll using theComposer XE 2011 environment, but it gives the wrong answers when using the XE dll's and the right answers with the 11.1.060 dll's.
Needless to say, the code is non-trivial and the above symptoms may indicate that there is a bug in my program. However, I really don't know how to even startfinding the problem.
Thanks in advance,