I have a C++ DLL which is currently built using Microsoft Visual Studio 2008 and which will be later used by several applications (some of which are native C++ and some of which are managed C# .NET).
My DLL currently uses multi-threaded dynamic runtime libraries (/MD) and single-threaded static IPP libraries.
I have a few functions that are performance critical where I would like to use the Intel compiler. I would prefer to continue using the Microsoft compiler for the rest of the DLL. I have done this using the "Use Intel C++ for selected file(s)..." option. The documentation seems to suggest I should be using a /Qvc option but I don't see one in my current compiler command-line. Is that a problem (my DLL appears to build and run correctly)?
My DLL appears to now have a runtime dependency on svml_dispmd.dll for the functions __svml_cosf4_ha(), __svml_sinf4_ha(), __svml_irem4() and __svml_floorf4(). Is this my only new dependency or is this a dispatcher that may have additional dependencies (which may depend on which CPU is installed)? Is it possible to avoid this dependency without also switching to the multi-threaded static runtime libraries (/MT) for the Microsoft compiler? Can I simply link my DLL against svml_dispmt.lib?
As far as /Qvc goes, you don't need to specify that option. The compiler derives that value from which Visual Studio version you are using.
There are system tools you can use to determine which dll's need to be distributed, you could read some documentation starting at this link: https://msdn.microsoft.com/en-us/library/8kche8ah.aspx