Intel® C++ Compiler
Community support and assistance for creating C++ code that runs on platforms based on Intel® processors.
7944 Discussions

Compiler 9.0.021 C++ message "problem with microsoft compilation"

AndrewC
New Contributor III
430 Views
With the latest 9.0 compiler ( installed into Visual C++ 6.0) I am getting a mysterious warning
"problem with microsoft compilation"
with no indication as to what the compiler thinks the problem is.
0 Kudos
6 Replies
Maximillia_D_Intel
430 Views
Hi,
One thing you can do is add the -# or -dryrun option which should emit a call to cl. Our compiler will call cl at times to do some processing that icl cannot such as things specific to COM.
Tuck away the command line call to cl in a script and this should help you reproduce the issue. Not sure what it could be from there.
Max
0 Kudos
rob2
Beginner
430 Views
This is a problem we're having also. The -dryrun option is Linux only and the -# option doesn't appear to be documented anywhere, but does produce voluminous output from the compiler. N on of whci contains the "problem with Microsoft compilation" message. Nor will the project link with this option selected.

As a house standard, we require zero warnings for compilations. Unless we can resolve this, we will have to abandon v9.0
0 Kudos
AndrewC
New Contributor III
430 Views
Well I certainly don't have any link problems - whatever this "problem with MS compilation" means or is caused by it has no effect on the running code.

Our code is vanilla C++ ( no COM etc).

Message Edited by vasci_intel on 12-13-2005 07:44 AM

0 Kudos
rob2
Beginner
430 Views
For clarification, the link error only occurs if we have the -# option set. The 'Microsoft' warning message occurs if the option is not set, but doesn't appear if it is set (I think Murphy's law aplies here).

The warning doesn't seem to effect, or indicate any problenm with, the end product, but we would have a problem getting this past our QA team (we'd be obliged to return to v8 of the compiler).

Yes, we do have COM interfaces in the program. It talks to MS Word (oh that I could only write 'vanilla C++', such bliss :-)
0 Kudos
Intel_C_Intel
Employee
430 Views

The Intel driver calls the MS compiler for a couple of things, mainly for source browse information and for minimal rebuild. If the MS compilation fails in any way (the Intel driver does not do any extensive checking as to why) the warning seen above is emitted. This is an informative warning and does not affect the Intel compilation. Of course, if the MS compiler fails, the source browse or minimal rebuild (or any other reason) information will not be complete.

When you see this warning from the Intel compiler, the underlaying problem could be a variety of things. The Intel compiler is detecting an incompatibility with the Microsoft compiler. Consider compiling this case with the Microsoft compiler to see what the error is. It would be advisable to use the same command line and environment when using the MS compiler as the Intel compiler to compile that file.

Note that you can get this warning anytime you have source that compiles ok with the Intel compiler but will not compile with the Microsoft compiler (and you need to invoke MS for one of the reasons mentioned above.)

For example here is a C99 source that you could compile with the Intel compiler:

struct A {

int a;

} f[20] = { [3].a = 1};

int main()

{

return f[3].a - 1;

}

[0 test] icl -nologo -Qc99 -c t.c -FRt.sbr

t.c

icl: warning: problem with Microsoft compilation of 't.c'

The fix for a case like this is to put conditional compilation around code that won't compile with MS.

0 Kudos
rob2
Beginner
430 Views
I think you've probably hit the nail right on the head. The principle reason for using the Intel compiler is the lack of proper support for templates and other features in MSVC6 (we are tied to the IDE for various reasons). With the MSVC compiler being called for some of our more advanced templates and things like the the Boost libraries, it is hardly surprising that MSVC reports errors and Intel v9 doesn't.



I suppose it's one of those warning we'll have to live with.



Thanks for the detailed explanation and the neat little sample (hairy code, doesn't come into it). Your time is much appreciated.
0 Kudos
Reply