プログラムの実行中に呼び出しツリーを保存する必要があります。そのために、コンパイラ スイッチ/callcapを見つけました。boost/exception/detail/exception_ptr.hppをインクルードするまで、すべて正常に動作します。
boost/exception/exception.hpp:216で場所 0x00000000を書き込むアクセス違反の未処理の例外が発生します。これは、main() に到達する前でもスローされます。
ブースト 1.51.0 を使用しています。
2 つの単純なファイルがあります。
// main.cpp
#include <boost/exception/detail/exception_ptr.hpp>
int main()
{}
cap.cpp は /callcap スイッチなしでコンパイルされます
// cap.cpp
extern "C" void __stdcall _CAP_Enter_Function(void *p)
{
}
extern "C" void __stdcall _CAP_Exit_Function(void *p)
{
}
問題は、exception_ptr.hpp のすべての関数が callcap 関数でラップされていることだと思いますが、残念ながら、hpp のみでこの機能をオフにする方法がわかりません。
皆さん、そういう経験はありますか?