Win32 / x64 linking problem

Win32 / x64 linking problem

I am trying to compile a C++ DLL for both Win32 and x64 platforms. Both DLLs are dependent on libmmd.dll and libiomp5md.dll .

According to Dependency Walker, the Win32 DLL is dependent on the x64 DLLs in..\redist\intel64\compiler.

These should presumably be the Win32 DLLS in  ..\redist\ia32\compiler, but I cannot figure out how to tell Visual Studio 2010 to link to them. (The Windows environment variable "path" includes both directories.) Any suggestions?

4 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

I may have answered my own question -- using the VC++ linker command /VERBOSE:Lib showed that the linker searches the ..\redist\ia32\compiler directory only, so presumably the correct DLLs are being accessed. The problem is presumably with Dependency Walker. (There are Win32 and x64 versions of this program, and I used the appropriate version for each DLL.)

Dependency Walker (and other similar utilities) probably depend on the correct DLL being found first on the %PATH% chain before another DLL with the same name (probably different architecture than the subject .EXE). This is probably more of an issue with DLLs that are not in the Windows system (Windows\System32, Windows\Syswow64) directories. Check your PATH, correct it if necessary, and retry with Dependency Walker.

>>...Both DLLs are dependent on libmmd.dll and libiomp5md.dll...

I suggested a long time ago a better naming rule, for example, for Debug configuration, like:

[ for 32-bit applications ]
libmmd.dll ( libmmd.lib )
libiomp5md.dll ( libiomp5md.lib )


libmm32d.dll ( libmm32d.lib )
libiomp5m32d.dll ( libiomp5m32d.lib )

[ for 64-bit applications ]
libmm64d.dll ( libmm64d.lib )
libiomp5m64d.dll ( libiomp5m64d.lib )

The rule is very simple and I regret to see that it is not used in many Intel software products.

Leave a Comment

Please sign in to add a comment. Not a member? Join today