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 に答える