0

I got a simple question. I read that linking debug static libraries to release executables is considered a bad thing. So I compiled the static library of TinyXML 2 in release mode. Library compiled without any errors. But when I want to link the release static library library with the release version of my example application I get the following output:

Checking project dependencies...
Building PrjTinyXML2_App.cbproj (Release, Win32)
bcc32 command line for "main.cpp"
  c:\program files (x86)\embarcadero\studio\18.0\bin\bcc32.exe -DNDEBUG -n.\Win32\Release -I"C:\Program Files 
  (x86)\Embarcadero\Studio\18.0\include\boost_1_39\boost\tr1\tr1";"C:\Program Files (x86)\Embarcadero\Studio\18.0\include\boost_1_39";"c:\program files 
  (x86)\embarcadero\studio\18.0\include";"c:\program files (x86)\embarcadero\studio\18.0\include\dinkumware";"c:\program files 
  (x86)\embarcadero\studio\18.0\include\windows\crtl";"c:\program files (x86)\embarcadero\studio\18.0\include\windows\sdk";"c:\program files 
  (x86)\embarcadero\studio\18.0\include\windows\rtl";"c:\program files (x86)\embarcadero\studio\18.0\include\windows\vcl";"c:\program files 
  (x86)\embarcadero\studio\18.0\include\windows\fmx";C:\Users\Public\Documents\Embarcadero\Studio\18.0\hpp\Win32;
  C:\Users\Public\Documents\Embarcadero\Studio\18.0\hpp\Win32 -Q -c -tC -C8 -o.\Win32\Release\main.obj -w-par -O2 -v- -vi 
  -H=.\Win32\Release\PrjTinyXML2_App.pch -H main.cpp 
brcc32 command line for "PrjTinyXML2_App.vrc"
  c:\program files (x86)\embarcadero\studio\18.0\bin\cgrc.exe -c65001 PrjTinyXML2_App.vrc -foPrjTinyXML2_App.res 
ilink32 command line
  c:\program files (x86)\embarcadero\studio\18.0\bin\ilink32.exe -G8 -L.\Win32\Release;
  C:\Users\Donald\Documents\Embarcadero\Studio\Projects\TinyXML2_Static_lib\Win32\Release;
  C:\Users\Donald\Documents\Embarcadero\Studio\Projects\TinyXML2_Static_lib\Win32\Debug;"c:\program files 
  (x86)\embarcadero\studio\18.0\lib\win32\release";"c:\program files (x86)\embarcadero\studio\18.0\lib\win32\release\psdk";
  C:\Users\Public\Documents\Embarcadero\Studio\18.0\DCP -j.\Win32\Release;
  C:\Users\Donald\Documents\Embarcadero\Studio\Projects\TinyXML2_Static_lib\Win32\Release;
  C:\Users\Donald\Documents\Embarcadero\Studio\Projects\TinyXML2_Static_lib\Win32\Debug;"c:\program files 
  (x86)\embarcadero\studio\18.0\lib\win32\release";"c:\program files (x86)\embarcadero\studio\18.0\lib\win32\release\psdk";
  C:\Users\Public\Documents\Embarcadero\Studio\18.0\DCP -l.\Win32\Release -Tpe  c0x32 .\Win32\Release\main.obj , .\Win32\Release\PrjTinyXML2_App.exe , 
  .\Win32\Release\PrjTinyXML2_App.map , PrjTinyXML2_lib.lib import32.lib cw32.lib , , PrjTinyXML2_App.res 
[ilink32 Error] Error: Unresolved external '___seh_personality_v0' referenced from C:\USERS\DONALD\DOCUMENTS\EMBARCADERO\STUDIO\PROJECTS\TINYXML2_STATIC_LIB\WIN32\RELEASE\PRJTINYXML2_LIB.LIB|tinyxml2
[ilink32 Error] Error: Unresolved external '__Unwind_SjLj_Register' referenced from C:\USERS\DONALD\DOCUMENTS\EMBARCADERO\STUDIO\PROJECTS\TINYXML2_STATIC_LIB\WIN32\RELEASE\PRJTINYXML2_LIB.LIB|tinyxml2
[ilink32 Error] Error: Unresolved external '__cxxabiv1::__si_class_type_info::' referenced from C:\USERS\DONALD\DOCUMENTS\EMBARCADERO\STUDIO\PROJECTS\TINYXML2_STATIC_LIB\WIN32\RELEASE\PRJTINYXML2_LIB.LIB|tinyxml2
[ilink32 Error] Error: Unresolved external '___cxa_pure_virtual' referenced from C:\USERS\DONALD\DOCUMENTS\EMBARCADERO\STUDIO\PROJECTS\TINYXML2_STATIC_LIB\WIN32\RELEASE\PRJTINYXML2_LIB.LIB|tinyxml2
[ilink32 Error] Error: Unresolved external '___cpp_terminate' referenced from C:\USERS\DONALD\DOCUMENTS\EMBARCADERO\STUDIO\PROJECTS\TINYXML2_STATIC_LIB\WIN32\RELEASE\PRJTINYXML2_LIB.LIB|tinyxml2
[ilink32 Error] Error: Unresolved external '__Unwind_SjLj_Unregister' referenced from C:\USERS\DONALD\DOCUMENTS\EMBARCADERO\STUDIO\PROJECTS\TINYXML2_STATIC_LIB\WIN32\RELEASE\PRJTINYXML2_LIB.LIB|tinyxml2
[ilink32 Error] Error: Unresolved external 'tinyxml2::StrPair::~StrPair()' referenced from C:\USERS\DONALD\DOCUMENTS\EMBARCADERO\STUDIO\PROJECTS\TINYXML2_APP\WIN32\RELEASE\MAIN.OBJ
[ilink32 Error] Error: Unresolved external '__cxxabiv1::__class_type_info::' referenced from C:\USERS\DONALD\DOCUMENTS\EMBARCADERO\STUDIO\PROJECTS\TINYXML2_STATIC_LIB\WIN32\RELEASE\PRJTINYXML2_LIB.LIB|tinyxml2
[ilink32 Error] Error: Unresolved external '__Unwind_Resume' referenced from C:\USERS\DONALD\DOCUMENTS\EMBARCADERO\STUDIO\PROJECTS\TINYXML2_STATIC_LIB\WIN32\RELEASE\PRJTINYXML2_LIB.LIB|tinyxml2
[ilink32 Error] Error: Unable to perform link
Failed
Elapsed time: 00:00:02.3

If I compile the application with the debug static TinyXML 2 library it compiles ok. Am I doing something wrong? I use C++ Builder 10.1 Berlin Update 2 Starter.

Gynteniuxas
  • 7,035
  • 18
  • 38
  • 54

1 Answers1

0

Looks like your issue is linked to compiler options in release mode. Could you have a look on "Exception handling" options?

___seh_personality_v0 and __Unwind_SjLj_Register are "Exception handler" functions.

Jeandey Boris
  • 743
  • 4
  • 9
  • I tried to build the TinyXML 2 static library again and use it in my example program. I got no errors. I think a compilersetting was the problem. Thanks for your reply Jeandey. – Bluewave1976 Jan 27 '17 at 13:11