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

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

Marián__VooDooMan__M
New Contributor II
630 Views

I am getting these strange errors:

[cpp]

4>  xilink: executing 'link'
4>     Creating library ..\..\lib\vc_x64_dll\wxbase30u.lib and object ..\..\lib\vc_x64_dll\wxbase30u.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>..\..\lib\vc_x64_dll\wxbase30u.dll : fatal error LNK1120: 114 unresolved externals
4>
4>Build FAILED.
4>
4>Time Elapsed 00:06:46.57

[/cpp]

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.

0 Kudos
14 Replies
Marián__VooDooMan__M
New Contributor II
630 Views

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

0 Kudos
QIAOMIN_Q_
New Contributor I
630 Views

Can you provide you build command or configuration?

Thanks,

Qiao

0 Kudos
MHlav
Beginner
630 Views

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

 

0 Kudos
Judith_W_Intel
Employee
630 Views

 

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

 

0 Kudos
SergeyKostrov
Valued Contributor II
630 Views

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

0 Kudos
drboon
Beginner
630 Views

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)

0 Kudos
Marián__VooDooMan__M
New Contributor II
630 Views

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):

[cpp]

/Yu"wx/wxprec.h" /MP /GS- /Qansi-alias /Qftz /W4 /Qdiag-disable:"1744" /Qdiag-disable:"809" /Qdiag-disable:"650" /QxHost /Zc:wchar_t /I"..\..\lib\vc_x64_dll\mswu" /I"..\..\include" /I"..\..\src\tiff\libtiff" /I"..\..\src\jpeg" /I"..\..\src\png" /I"..\..\src\zlib" /I"..\..\src\regex" /I"..\..\src\expat\lib" /Zi /O3 /Ob2 /Fd"..\..\lib\vc_x64_dll\wxbase30u.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"..\..\lib\vc_x64_dll\" /EHsc /nologo /Fo"x64\DLL Release\vc_mswudll\base\" /Ot /Fp"x64\DLL Release\vc_mswudll\wxprec_basedll.pch"

[/cpp]

and link command is:

[cpp]

/OUT:"..\..\lib\vc_x64_dll\wxbase30u.dll" /MANIFEST /NXCOMPAT /PDB:"..\..\lib\vc_x64_dll\wxbase30u.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:"..\..\lib\vc_x64_dll\wxbase30u.lib" /DEBUG /DLL /MACHINE:X64 /WINMD /OPT:REF /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /ManifestFile:"x64\DLL Release\wx_vc_vdm_base\wxbase30u.dll.intermediate.manifest" /OPT:ICF /NOLOGO /LIBPATH:"..\..\lib\vc_x64_dll\" /TLBID:1

[/cpp]

0 Kudos
Marián__VooDooMan__M
New Contributor II
630 Views

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.

0 Kudos
QIAOMIN_Q_
New Contributor I
630 Views

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

0 Kudos
Andrius_R_
Beginner
630 Views

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)

0 Kudos
Marián__VooDooMan__M
New Contributor II
630 Views

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!

0 Kudos
QIAOMIN_Q_
New Contributor I
630 Views

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

0 Kudos
Unmesh_C_
Beginner
630 Views

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:

[cpp]someMethod(&MyClass::myFunction);[/cpp]

Modified Code:

[cpp]void(MyClass::*func)() = &MyClass::myFunction;

someMethod(func);[/cpp]

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

Hope this helps.

Unmesh

 

0 Kudos
Marián__VooDooMan__M
New Contributor II
630 Views

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.

0 Kudos
Reply