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

ICL EM64T problem: linking error on x64 targets

servil
Beginner
695 Views
Greetings,

for some projects linking fails with error of unresolved external.
Having demangle reported names I've deduced those are unwind chunks of own function(s).
Have observed only with Intel64 code, link succeeded for x86 platform of the same code.
Any resolution, or is this a known problem?
Eventually, I'll appreciate any solutions to overcome this error.
0 Kudos
7 Replies
JenniferJ
Moderator
695 Views
Which version of the Intel C++ compiler are you using?is it release config or debug? did you use /Qipo or /GL?

It could be a bug. But make sure to try the latest compiler update.

Thanks,
Jennifer
0 Kudos
servil
Beginner
695 Views
This is IntelC++ for EM64T, version 11.1

/Qipo wasnot used, release build

complete build options for compiler:

/GF /MD /Gd /GA /Zc:wchar_t /Qoption,c,--arg_dep_lookup /Qwd69 /Qvc9 /Ox /YXstdafx.h /Qwd47,1786,2259 /QxHost /Wp64 /GX /GR /Qoption,cpp,--arg_dep_lookup /DNDEBUG=1 /D_WIN32_IE=0x0900 /D_WINDOWS=1 /D_WIN32=1 /DWIN32=1 /DWINVER=0x0601 /D_WIN32_WINDOWS=0x0601 /D_WIN64=1 /DWIN64=1 /D_WIN32_WINNT=0x0601 /D__NT__=0x0601 /D_AFXDLL=1 /D_ATL_DLL=1 /D_STLP_USING_NAMESPACE_BUG=1 /DHAVE_STLPORT=1 /D_STLP_USE_STATIC_LIB=1 /DBOOST_ALL_NO_LIB /D_UNICODE=1 /DUNICODE=1 /D_REENTRANT /Dx64 /U_DEBUG /U_STLP_DEBUG /U_STLP_USE_DYNAMIC_LIB /U_MBCS /I"$(BOOST_ROOT)" /I"$(STLP_ROOT)/stlport" /I"$(ICInstallDir)include\intel64" /I"$(ICInstallDir)include" /I"$(MSVC_ROOT)\include" /I"$(SDKROOT)\include"

complete build options for xilink:

/nologo /machine:x64 /incremental:no /release /opt:ref /subsystem:windows

0 Kudos
JenniferJ
Moderator
695 Views

could you post the link errors? and I'll check if there's an existing issue with it.

Also try to remove the options one by one to see which one caused the problem?

Thanks,
Jennifer

0 Kudos
servil
Beginner
695 Views
I have reproduced the same error with building PCRE C++ frontend library, x64

This is project build log:


build.pl v1.0 - automated project builder
(c) 2008-2010 servil
Win32 assumed version: 6.1
MSIE assumed version: 9.0
D:\develop\Intel\CPP\bin\Intel64\icl /nologo /GF /MD /LD /Zc:wchar_t /Zc:forScope /W0 /Qlocation,masm,"D:\Microsoft\Visual Studio 9\VC\bin\amd64\ml64.exe" /Qoption,c,--arg_dep_lookup /Qwd69 /Qvc9 /O3 /Qipo /QxHost /Zi /Qoverride-limits /GX /GR /Qoption,cpp,--arg_dep_lookup /DNDEBUG=1 /D_WIN32_IE=0x0900 /DWINVER=0x0601 /D_WIN32_WINDOWS=0x0601 /D_WIN64=1 /DWIN64=1 /D_WIN32_WINNT=0x0601 /D__NT__=0x0601 /D_WINDLL=1 /D_USRDLL=1 /D_AFXDLL=1 /D_ATL_DLL=1 /D_STLP_USING_NAMESPACE_BUG=1 /DHAVE_STLPORT=1 /D_STLP_USE_STATIC_LIB=1 /DBOOST_ALL_NO_LIB /DPREFIX="D:/develop/GNU" /DEXEC_PREFIX="D:/develop/GNU" /DBINDIR="D:/develop/GNU/bin" /DSBINDIR="D:/develop/GNU/sbin" /DLIBEXECDIR="D:/develop/GNU/libexec" /DDATADIR="D:/develop/GNU/share" /DINCLUDEDIR="D:/develop/GNU/include" /DLIBDIR="D:/develop/GNU/lib" /DSYSCONFDIR="D:/develop/GNU/etc" /DSHAREDSTATEDIR="D:/develop/GNU/com" /DLOCALSTATEDIR="D:/develop/GNU/var" /DLOCALEDIR="D:/develop/GNU/share/locale" /DINFODIR="D:/develop/GNU/info" /DMANDIR="D:/develop/GNU/man" /DDOCDIR="D:/develop/GNU/doc" /DEMACSDIR="D:/develop/GNU/emacs" /DOLDINCLUDEDIR="/usr/include" /DPACKAGE="pcre" /DPACKAGE_NAME="PCRE" /DPACKAGE_TARNAME="pcre" /DPACKAGE_VERSION="8.11" /D"PACKAGE_STRING="PCRE 8.11"" /DPACKAGE_BUGREPORT="" /DPKGDATADIR="D:/develop/GNU/share/pcre" /DPKGLIBDIR="D:/develop/GNU/lib/pcre" /DPKGINCLUDEDIR="D:/develop/GNU/include/pcre" /DVERSION=PACKAGE_VERSION /DHAVE_CONFIG_H /DPCRE_MAJOR=8 /DPCRE_MINOR=11 /DPCRE_PRERELEASE= /DPCRE_DATE=2010-12-10 /DPCRE_VERSION="8.11" /DPCRE_LIB_VERSION="8:11:0" /DPCRE_POSIXLIB_VERSION="8:11:0" /DPCRE_CPPLIB_VERSION="8:11:0" /DDLL_EXPORT /DSUPPORT_UTF8 /DSUPPORT_UCP /U_DEBUG /U_STLP_DEBUG /U_STLP_USE_DYNAMIC_LIB /I. /IC:\Users\Admin\Documents/C/3rd_party/zlib /IC:\Users\Admin\Documents/C/3rd_party/bzip2 /IC:\Users\Admin\Documents/C /IC:\Users\Admin\Documents/C/3rd_party/boost /IC:\Users\Admin\Documents/C/3rd_party/STLport/stlport /ID:\develop\Intel\CPP\include\intel64 /ID:\develop\Intel\CPP\include /I"D:\Microsoft\Visual Studio 9\VC\include" /ID:\Microsoft\SDKs\Windows\v7.0A\include /c /Fo./ ./pcre_scanner.cc ./pcre_stringpiece.cc ./pcrecpp.cc
%PATH%=D:\develop\Intel\CPP\bin\Intel64;D:\Microsoft\Visual Studio 9\VC\bin\amd64;D:\Microsoft\Visual Studio 9\VC\bin;D:\Microsoft\SDKs\Windows\v7.0A\bin\x64;D:\Microsoft\SDKs\Windows\v7.0A\bin;D:\develop\Intel\Fortran\\bin;D:\develop\MinGW/bin;D:/develop/GNU/bin;C:\batch;C:\Windows\system32;C:\Windows;D:\develop\MinGW\bin;C:\packers;D:\develop\Perl\site\bin;D:\develop\Perl\bin;D:\develop\Perl\DevKit\bin\;D:\develop\Python\Scripts;D:\develop\Python;C:\Windows\System32\Wbem;C:\Program Files (x86)\QuickTime\QTSystem\;C:\Users\Admin\AppData\Roaming\Python\Scripts;C:\Users\Admin\Documents\perl;C:\Users\Admin\Documents\python;
pcre_scanner.cc
pcre_stringpiece.cc
pcrecpp.cc
D:\develop\Intel\CPP\bin\Intel64\xilink /nologo /machine:x64 /incremental:no /release /opt:ref /dll ./pcre_scanner.obj ./pcre_stringpiece.obj ./pcrecpp.obj /libpath:./lib /libpath:C:\Users\Admin\Documents/C/3rd_party/boost/lib/x64 /libpath:C:\Users\Admin\Documents/C/3rd_party/boost/lib /libpath:C:\Users\Admin\Documents/C/3rd_party/STLport/lib /libpath:D:\develop\Intel\CPP\lib\Intel64 /libpath:"D:\Microsoft\Visual Studio 9\VC\lib\amd64" /libpath:"D:\Microsoft\Visual Studio 9\VC\lib" /libpath:D:\Microsoft\SDKs\Windows\v7.0A\lib\x64 /libpath:D:\Microsoft\SDKs\Windows\v7.0A\lib pcre.lib pcreposix.lib libircmt.lib stlport_statix.lib /out:./lib/pcrecpp.dll
%PATH%=D:\develop\Intel\CPP\bin\Intel64;D:\Microsoft\Visual Studio 9\VC\bin\amd64;D:\Microsoft\Visual Studio 9\VC\bin;D:\Microsoft\SDKs\Windows\v7.0A\bin\x64;D:\Microsoft\SDKs\Windows\v7.0A\bin;D:\develop\Intel\Fortran\\bin;D:\develop\MinGW/bin;D:/develop/GNU/bin;C:\batch;C:\Windows\system32;C:\Windows;D:\develop\MinGW\bin;C:\packers;D:\develop\Perl\site\bin;D:\develop\Perl\bin;D:\develop\Perl\DevKit\bin\;D:\develop\Python\Scripts;D:\develop\Python;C:\Windows\System32\Wbem;C:\Program Files (x86)\QuickTime\QTSystem\;C:\Users\Admin\AppData\Roaming\Python\Scripts;C:\Users\Admin\Documents\perl;C:\Users\Admin\Documents\python;
Creating library ./lib/pcrecpp.lib and object ./lib/pcrecpp.exp
ipo_21885obj.obj : error LNK2001: unresolved external symbol unwind.?Replace@RE@pcrecpp@@QEBA_NAEBVStringPiece@2@PEAV?$basic_string@DV?$char_traits@D@stlpx_std@@V?$allocator@D@2@@stlpx_std@@@Z.0.3
ipo_21885obj.obj : error LNK2001: unresolved external symbol unwind.?Replace@RE@pcrecpp@@QEBA_NAEBVStringPiece@2@PEAV?$basic_string@DV?$char_traits@D@stlpx_std@@V?$allocator@D@2@@stlpx_std@@@Z.0.4
./lib/pcrecpp.dll : fatal error LNK1120: 2 unresolved externals
0 Kudos
JenniferJ
Moderator
695 Views
I remember we've fixed a similar issue with such unresolved symbol before, but I didn't find the case number.

Several things to try:
1. does it happen without /Qipo? does it happen in /Od?
2. try to build from the build-environment from "Start -> All programs ->....". (not sure which IntelC version you're using, the menu is different), then add additional include/path/lib directories.

Jennifer
0 Kudos
servil
Beginner
695 Views
1. does it happen without /Qipo? does it happen in /Od?

That's the solution. Now tried to decrease optimisation level, highest optimization level that links is O1.

Can optimizations be disabled partially like on MS compiler?

0 Kudos
JenniferJ
Moderator
695 Views
Yes, you can lower the optimization at file-level.

But I've seen such bug before and is fixed. so try to log-on to the Intel Registration Center to download the latest update. For 11.1, the update 8 just released this week. For 12.0 (Composer XE) the update1 is released last week or the week before.

Thanks,
Jennifer
0 Kudos
Reply