XE 2013 Update 3 breaks #import statements in x64 builds

XE 2013 Update 3 breaks #import statements in x64 builds

No longer generates tlh/tli files.  Works in x86 builds.

Always taking a step back with each step forward in the updates.

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

From a command line, it works. 

D:\Jennifer\Issues>icl /c dllissue.cpp
Intel(R) C++ Intel(R) 64 Compiler XE for applications running on Intel(R) 64, Version 13.1.1.171 Build 20130313
Copyright (C) 1985-2013 Intel Corporation. All rights reserved.

dllissue.cpp
47802.cpp
47802.cpp

D:\Jennifer\Issues>type dllissue.cpp
#import "c:\program files (x86)\common files\system\ado\msado15.dll" no_namespace raw_interfaces_only
#import <cdosys.dll> no_namespace raw_interfaces_only

#include "cdosysstr.h"
#include "cdosyserr.h"

int main(int argc, char* argv[]) {
CoInitialize(NULL);
IMessage* pMsg = NULL;
HRESULT hr = CoCreateInstance( __uuidof(Message),NULL,CLSCTX_INPROC_SERVER,__uuidof(IMessage),(void**) &pMsg);

CoUninitialize();
return 0;
}

D:\Jennifer\Issues>dir *.tlh
Volume in drive D has no label.
Volume Serial Number is 927C-E946

Directory of D:\Jennifer\Issues

06/05/2012 11:02 PM 39,680 cdosys.tlh
06/05/2012 10:05 PM 104,014 msado15.tlh
2 File(s) 143,694 bytes
0 Dir(s) 201,670,336,512 bytes free

D:\Jennifer\Issues>

are you using VS2010 to build?

Jennifer  

VS2012.  I created a support case on the premier site.

Thank you Michael. We will investigate it.

Jennifer

I'm experiencing the same issue. For now, my workaround is after "clean solution" to restore *.tlh and *.tli from backup, or adjust the code to not use "#import", but "#include" header file for my COM object. I'm waiting impatiently for next release.

-- With best regards, VooDooMan - If you find my post helpful, please rate it and/or select it as a best answer where applies. Thank you.

VooDooMan, I'm about to do that as well. It's just a pain to do as we have many projects that are affected.

Please consider the following workaround:

- Generate tlh and tli files ( it is assumed that COM interfaces are in stable state, that is already implemented / I know that in some cases it is hard to be assumed )

- Comment #import directive(s) which created those tlh and tli files

- Use tlh and tli files with #include directive

Note: I use that workaround for many years with MapPoint COM interfaces.

I duplicated this issue inside VS2012 IDE x64 config.

The only work-around I can see is the one from Sergey. I used to do that as well. It saves compilation time as well if you have lots of "#import".
But if I found any other work-around without the need of changing your code, I'll let you know.

Thanks.
Jennifer

Thanks.

>>...4.Update "/Qlocation,link,"$(VCInstallDir)\bin\x86_amd64"" to "/Qlocation,link,"$(VCInstallDir)\bin\amd64""

Thank you and it is a very simple solution!

By the way, folder ..\bin\x86_amd64 has 32-bit versions of tools and folder ..\bin\amd64 has 64-bit versions of tools.

Update to this issue.

It is fixed in the Intel C++ Composer XE for Windows 2013 update 5 that is downloadable from Intel Registration Center.

Jennifer

Leave a Comment

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