Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
28994 Discussions

Linking Version 10 Executables to Version 11 dll's following Compiler Upgrade

Groundsel
Beginner
745 Views

Hello,

I have a question regarding a compiler upgrade 10.1.021 to the current 11.0.072 of the IA32 package. So far, my tests have been informal and have not affected the source controlled version of our most critical software. That software resides, for the most part, in a single Visual Studio solution with 94 projects.

My tests indicate that one of the seldom used project executables is indeed affected by the upgrade but to the good! Improvements made in the compiler optimization for 11.0.072 make its optimized executable give results much closer to its non-optimized counterpart. So it makes sense to upgrade that particular project. My expectation is that if I do this officially calling for a rebuild of the affected project in the VSS controlled edition that the following will occur:

Visual Studio will check out the project in question and the 3 dll projects on which it is dependent.
Those will be rebuilt in the usual fashion.
The *.vfproj files will be upgraded per version 11 compilation.
I will then have the opportunity to check them all in.

My question concerns the remaining 90 projects in the solution. It is desirable for Quality Assurance reasons to leave them be if I can. However, they would have to link to the dlls affected by the upgrade of the one. Will they still work with the new dlls or must Version 10 compiled executables have Version 10 dlls? If the answer to this is affirmative, I must rebuild the entire solution and greatly expand the suite of compatibility tests.

0 Kudos
10 Replies
TimP
Honored Contributor III
745 Views
When you add a .obj built by a new compiler version, it requires linking against the libraries which come with the new compiler. If I understand your situation correctly, the .dll built entirely with 10.1 would continue to work, as 10.1 objects are supported by 11.0 libraries.
0 Kudos
Steven_L_Intel1
Employee
745 Views
To add to what Tim said - you should never have to rebuild an IVF application just because you installed a newer version of IVF. If we broke that compatibility somehow, that's a bug.
0 Kudos
Groundsel
Beginner
745 Views

I think you have answered my question as I hoped. However, let me just ascertain that I am not misreading what Tim said. I would have 10.1 executables using 11.0 dll's rather than vice versa. I guess that works too?
0 Kudos
Steven_L_Intel1
Employee
745 Views
10.1 executables (or DLLs built with 10.1) will work with 11.0 run-time DLLs installed. The reverse is NOT supported - running 11.0 executables with 10.1 run-time DLLs, though your own DLLs built with 10.1 should be ok.
0 Kudos
a_leonard
Novice
745 Views
I have the latest IVF compiler and integration with VS2005. If I provide a third party a solution/project to build a DLL to use with my executable, and that solution contains object and module files I provide in addition to a source file they can modify, do they also have to have the latest compiler and integration? What if their support has lapsed and they are stuck with an old compiler?
0 Kudos
Steven_L_Intel1
Employee
745 Views
If you supply them with object modules, they will need the run-time library from the newer compiler. Luckily, we allow you to redistribute those libraries. If you also give them a VS project, they will need the same or later compiler version as project files are not backward compatible across major versions.
0 Kudos
Groundsel
Beginner
745 Views
10.1 executables (or DLLs built with 10.1) will work with 11.0 run-time DLLs installed. The reverse is NOT supported - running 11.0 executables with 10.1 run-time DLLs, though your own DLLs built with 10.1 should be ok.

I have a follow-up question regarding technique. I would like to build only the 11.0 executable and to leave(my own) 10.0dll's as is. That is, I would like to set up that "own DLL's built with 10.1" situation you mention.

However, when I try to doa build with Visual Studio 2003 (11.0 compiler installed), itdoes nothingsaying that everything is up to date. When Irebuild, it upgrades and revises the dll's too. So it appears that as a minimum, I must upgrade the executable and the dll's indicated as dependencies. Is that so or is there some custom build method which would have enabled me to do as I wished?
0 Kudos
Steven_L_Intel1
Employee
745 Views
I suppose you could right click on the executable project and select "Rebuild only". Will that work for you?
0 Kudos
Groundsel
Beginner
745 Views
I suppose you could right click on the executable project and select "Rebuild only". Will that work for you?

That was the first thing I tried.It did not fly and so I tried the other measures described. I have forgotten what message arose from this particular attempt - butVisual Studio would not do it.
0 Kudos
Steven_L_Intel1
Employee
745 Views
In that case, I recommend that you put the DLL project in its own solution and reference the .lib created from the DLL build in your executable build. That way, building the executable won't try to rebuild the DLL.
0 Kudos
Reply