Strange link errors ICC 14 SP1 Update 1, MSVC 2013 RTM, x64 target, IPO

Strange link errors ICC 14 SP1 Update 1, MSVC 2013 RTM, x64 target, IPO

Marián "VooDooMan" Meravý's picture

I am getting these strange errors:

4>  xilink: executing 'link'
4>     Creating library ....libvc_x64_dllwxbase30u.lib and object ....libvc_x64_dllwxbase30u.exp
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.10
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.100
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.101
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.102
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.103
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.104
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.106
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.107
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.108
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.109
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.112
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.115
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.12
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.14
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.15
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.16
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.17
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.18
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.19
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.21
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.23
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.25
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.26
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.27
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.30
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.32
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.33
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.36
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.39
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.4
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.40
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.44
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.47
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.48
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.5
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.51
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.58
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.59
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.61
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.66
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.67
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.68
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.7
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.72
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.74
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.76
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.77
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.79
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.8
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.80
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.82
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.83
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.85
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.86
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.87
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.89
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.9
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.90
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.93
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.94
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.97
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.98
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U0.99
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U1.105
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U1.11
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U1.110
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U1.20
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U1.28
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U1.29
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U1.35
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U1.37
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U1.38
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U1.41
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U1.42
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U1.45
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U1.54
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U1.55
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U1.56
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U1.60
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U1.62
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U1.65
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U1.71
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U1.75
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U1.81
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U1.96
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U2.111
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U2.113
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U2.114
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U2.13
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U2.3
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U2.34
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U2.49
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U2.50
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U2.52
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U2.53
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U2.57
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U2.6
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U2.69
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U2.73
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U2.78
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U2.88
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U3.3
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U3.43
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U3.91
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U4.92
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U5.70
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U6.22
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U7.95
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U8.46
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U8.63
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U8.64
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$U9.31
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$Ub
4>wxbase30u.exp : error LNK2001: unresolved external symbol __$Uf
4>....libvc_x64_dllwxbase30u.dll : fatal error LNK1120: 114 unresolved externals
4>
4>Build FAILED.
4>
4>Time Elapsed 00:06:46.57

I have searched (full-text) in all generated .obj files for symbol e.g. "$U0.107", but there is no such symbol.

This looks like a regression in Update 1, since previous ICC version had no problems.

-- 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.
15 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.
Marián "VooDooMan" Meravý's picture

Additional information: the linker error is manifesting with usage of MSVC 2012 as well.

-- 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.
QIAOMIN Q. (Intel)'s picture

Can you provide you build command or configuration?

Thanks,

Qiao

Michael Hlavinka's picture

Seems like we may be seeing the same problem moving from SP1 to Update 1 for SP1.  With every update to Intel C++, there is a strong probability of not being able to link my application.  My errors are more like those that follow.  My outputs are DLL's.  Are you creating DLL's or executables?  I also have the same problem building the x86 edition of my application.

17>MyModule.exp : error LNK2001: unresolved external symbol __$U10
17>MyModule.exp : error LNK2001: unresolved external symbol __$U11
17>MyModule.exp : error LNK2001: unresolved external symbol __$U12
17>MyModule.exp : error LNK2001: unresolved external symbol __$U1c
17>MyModule.exp : error LNK2001: unresolved external symbol __$U1d
17>MyModule.exp : error LNK2001: unresolved external symbol __$U1e
17>MyModule.exp : error LNK2001: unresolved external symbol __$U20
17>MyModule.exp : error LNK2001: unresolved external symbol __$U21
17>MyModule.exp : error LNK2001: unresolved external symbol __$U22
17>MyModule.exp : error LNK2001: unresolved external symbol __$U23
17>MyModule.exp : error LNK2001: unresolved external symbol __$U24
17>MyModule.exp : error LNK2001: unresolved external symbol __$Uc
17>MyModule.exp : error LNK2001: unresolved external symbol __$Ud
17>MyModule.exp : error LNK2001: unresolved external symbol __$Ue
17>MyModule.exp : error LNK2001: unresolved external symbol __$Uf

 

Judith Ward (Intel)'s picture

 

I think this is a bug with DLLIMPORT and is being tracked internally as DPD200387370. Unfortunately the fix did not make it into 14.0 update 1 and there is no known workaround. But it will be fixed in update 2...

 

Sergey Kostrov's picture

Is there a simple test-case to reproduce the linking problem? Thanks in advance.

drboon's picture

Same problem over here when building a DLL that worked in SP1 w/o update 1. Can you give us a rough estimate on when update 2 will be ready? (I'd vote for a hotifx on this one ... breaking previously working builds is really not that fun)

Marián "VooDooMan" Meravý's picture

Quote:

Michael Hlavinka wrote:

Are you creating DLL's or executables?

Greetings Michael, in my case it's a DLL.

FWIW, my compile and link commands are (took it from MSVC IDE):

/Yu"wx/wxprec.h" /MP /GS- /Qansi-alias /Qftz /W4 /Qdiag-disable:"1744" /Qdiag-disable:"809" /Qdiag-disable:"650" /QxHost /Zc:wchar_t /I"....libvc_x64_dllmswu" /I"....include" /I"....srctifflibtiff" /I"....srcjpeg" /I"....srcpng" /I"....srczlib" /I"....srcregex" /I"....srcexpatlib" /Zi /O3 /Ob2 /Fd"....libvc_x64_dllwxbase30u.pdb" /fp:fast=2 /Quse-intel-optimized-headers /D "_HAS_ITERATOR_DEBUGGING=0" /D "_ITERATOR_DEBUG_LEVEL=0" /D "WIN32" /D "WIN64" /D "_USRDLL" /D "DLL_EXPORTS" /D "_CRT_SECURE_NO_DEPRECATE=1" /D "_CRT_NON_CONFORMING_SWPRINTFS=1" /D "_SCL_SECURE_NO_WARNINGS=1" /D "__WXMSW__" /D "_UNICODE" /D "WXBUILDING" /D "NDEBUG" /D "wxUSE_GUI=0" /D "WXMAKINGDLL_BASE" /D "wxUSE_BASE=1" /D "_WINDLL" /D "UNICODE" /Qstd=c++0x /Qipo /GF /Zc:forScope /GR /Oi /MD /Fa"....libvc_x64_dll\" /EHsc /nologo /Fo"x64DLL Releasevc_mswudllbase\" /Ot /Fp"x64DLL Releasevc_mswudllwxprec_basedll.pch"

and link command is:

/OUT:"....libvc_x64_dllwxbase30u.dll" /MANIFEST /NXCOMPAT /PDB:"....libvc_x64_dllwxbase30u.pdb" /DYNAMICBASE "wxzlib.lib" "wxregexu.lib" "wxexpat.lib" "kernel32.lib" "user32.lib" "gdi32.lib" "comdlg32.lib" "winspool.lib" "winmm.lib" "shell32.lib" "comctl32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "rpcrt4.lib" "advapi32.lib" "wsock32.lib" "wininet.lib" "odbc32.lib" "odbccp32.lib" /RELEASE /LARGEADDRESSAWARE /IMPLIB:"....libvc_x64_dllwxbase30u.lib" /DEBUG /DLL /MACHINE:X64 /WINMD /OPT:REF /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /ManifestFile:"x64DLL Releasewx_vc_vdm_basewxbase30u.dll.intermediate.manifest" /OPT:ICF /NOLOGO /LIBPATH:"....libvc_x64_dll\" /TLBID:1

-- 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.
Marián "VooDooMan" Meravý's picture

Quote:

Sergey Kostrov wrote:

Is there a simple test-case to reproduce the linking problem? Thanks in advance.

Greetings Sergey,

unfortunately no. I can't provide minimal sample. It is manifesting only in few huge projects.

-- 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.
QIAOMIN Q. (Intel)'s picture

Michael's build command:

C:\Program Files (x86)\Intel\Composer XE 2013 SP1\bin\ia32\icl.exe /c /Qvc11 /Qlocation,link,"C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin"

/I../BREResrc /I../Utility /I../COMUtility /I../Interfaces /I../Events /I../NumericalMethods /I../GUIUtility /I../SimCore /I../ThermoPhys /IRelease.intel\ /IC:\ProMax\Include /IC:\ProMax\Include\Release.intel\ /Zi /nologo /W3 /O2 /Oi /Qftz- /Qparallel /D __INTEL_COMPILER=1400 /D WIN32 /D _WINDOWS /D NDEBUG /D _AFXEXT /D _CRT_SECURE_NO_DEPRECATE /D _WINDLL /D _UNICODE /D UNICODE /D _ATL_DLL /D _AFXDLL /GF /EHsc /MD /GS /Gy /fp:fast /fp:source /Zc:wchar_t /Zc:forScope /GR /Yc"stdafx.h"/Fp"Release.intel\Flash.pch" /Fo"Release.intel\\" /Fd"Release.intel\vc110.pdb" /Gd /TP /FITargetVer.h StdAfx.cpp /Qlong-double/QaxCORE-AVX2,CORE-AVX-I,AVX,SSE4.2,SSE4.1,SSSE3,SSE3 /arch:SSE2 /Qfast-transcendentals /Qdiag-disable:cpu-dispatch /Qwd377 /Qwd1885 /Qwd10121

To Judith Ward (Intel)  :Is the same problem as the one in CQ? 

xilink: executing 'link'   Creating library ../build/VS2005/Win32/Release/Equalizer.lib and object ../build/VS2005/Win32/Release/Equalizer.exp Equalizer.exp : error LNK2001: unresolved external symbol __$U0 Equalizer.exp : error LNK2001: unresolved external symbol __$U1 Equalizer.exp : error LNK2001: unresolved external symbol __$U2 Equalizer.exp : error LNK2001: unresolved external symbol __$U3  .....

Thanks

Andrius R.'s picture

Same here, when building Qt 4.8.5, it fails on building Qt3Support4 dll (IPO disabled by setting "QMAKE_CFLAGS_LTCG = /Qipo-" on mkspecs/win32-icc/qmake.conf)

Marián "VooDooMan" Meravý's picture

I needed to downgrade ICC because of this error, but I am sad that for this I cannot use newest ICC features.

Some of Intel's employee wrote on this forum, that Intel's employees cannot comment on Intel's future plans.

I would really appreciate, at least some time line, when next update to ICC will be scheduled to release.

TIA!

-- 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.
QIAOMIN Q. (Intel)'s picture

Thanks Marián

As far as i can tell ,the fix for this bug has been verified in the compiler 14.0 ,when to release is upper-level's decision i think. I have been pushing this fix for you and asking for a workaround ,thanks for your patience.

Regards, Qiao

Unmesh C.'s picture

I observed similar linker errors on some of the libraries after moving from Intel C++ Compiler 13 using MSVC 2012 to Intel C++ Compiler 14 SP1 Update1 with MSVC 2013. I was able to boil down the library code to the attached test case that reproduces the unresolved external symbol errors. The compile line, link line and the linker output I got are mentioned in the header comment of the test case. The test case creates a library.

All the places in the code that resulted in these errors were taking a function pointer and either passing it to a method or assigning it to another type resulting in an implicit conversion. I was able to workaround the problem by first assigning the function pointer to its own variable and then passing that variable to the function or convert it implicitly to another type.

For example,

Original code:

someMethod(&MyClass::myFunction);

Modified Code:

void(MyClass::*func)() = &MyClass::myFunction;
someMethod(func);

In the attached test case, I've showed the workaround in the method "Derived::function1()".

Hope this helps.

Unmesh

 

Attachments: 

AttachmentSize
Download NativeTestCase_15528.cpp2.01 KB
Marián "VooDooMan" Meravý's picture

Quote:

Judith Ward (Intel) wrote:

I think this is a bug with DLLIMPORT and is being tracked internally as DPD200387370. Unfortunately the fix did not make it into 14.0 update 1 and there is no known workaround. But it will be fixed in update 2...

I can confirm Update 2 from 12th of February fixed the issue.

-- 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.

Login to leave a comment.