0

我有一个简单的问题。我读到链接调试静态库以发布可执行文件被认为是一件坏事。所以我在发布模式下编译了TinyXML 2的静态库。库编译没有任何错误。但是,当我想将发布静态库库与示例应用程序的发布版本链接时,我得到以下输出:

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

如果我使用调试静态 TinyXML 2 库编译应用程序,它可以编译。难道我做错了什么?我使用 C++ Builder 10.1 Berlin Update 2 Starter。

4

1 回答 1

0

看起来您的问题与发布模式下的编译器选项有关。你能看看“异常处理”选项吗?

___seh_personality_v0并且__Unwind_SjLj_Register是“异常处理程序”函数。

于 2017-01-11T21:17:48.157 回答