Community
cancel
Showing results for 
Search instead for 
Did you mean: 
MHlav
Beginner
34 Views

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.

0 Kudos
11 Replies
JenniferJ
Moderator
34 Views

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  

MHlav
Beginner
34 Views

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

JenniferJ
Moderator
34 Views

Thank you Michael. We will investigate it.

Jennifer

Marián__VooDooMan__M
New Contributor II
34 Views

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.
MHlav
Beginner
34 Views

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

SKost
Valued Contributor II
34 Views

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.
JenniferJ
Moderator
34 Views

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

JenniferJ
Moderator
34 Views

Our IDE engineer has found an easy work-around. It's documented here: http://software.intel.com/en-us/articles/compilation-error-with-import-xxxdll-when-building-the-x64-... 

Jennifer

MHlav
Beginner
34 Views

Thanks.

SKost
Valued Contributor II
34 Views

>>...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.
JenniferJ
Moderator
34 Views

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