ホーム » 2019 » 7月 » 04

日別アーカイブ: 2019/07/04

2019年7月
 123456
78910111213
14151617181920
21222324252627
28293031  

カテゴリー

アーカイブ

ブログ統計情報

  • 100,324 アクセス


VC 2015 Release.exe で 0xC0000005

今まで VC 2013 だったプロジェクトを VC 2015 に.
Release 版を実行するとエラーに.
0x006F3947 で例外がスローされました (FBXtoM.exe 内): 0xC0000005: 場所 0xFFFFFFFF の読み取り中にアクセス違反が発生しました
この例外のハンドラーがある場合は、プログラムを安全に続行できます。
0xC0000005: 場所 0xFFFFFFFF の読み取り中にアクセス違反が発生しました
Debug 版では問題ない.また,VC 2013 Release 版も通る.
変数 bp がおかしくなっているっぽいがよくわからない.


このプロジェクトは FBX SDK を使用しているため,VC が限定される.
そのため,この部分の単体テスト用のプロジェクトがあったのでそれを VC 6 から順にビルド.
やはり,VC 2015 では実行時エラーとなる.VC 2017 は通る.
検索すると「VC 2015 の問題」と思われる情報があった.
Visual Studio 2015 および Visual C++ 2017 のリンク時のコード生成における最適化の不具合について
今使っている VS 2017 のバージョンは 15.9.13 .


単体テストプロジェクトで,書かれていた回避策を試したが効果なし?
コンパイルの「最適化」で「実行速度の最大化(/O2)」を「サイズの最小化(/O1)」に変更して通る様にはなった.
VC 2015 コンパイル時の最適化の指定


次の様に bp を求める部分を使用する直前に移動して対応.

	if (0<=lv && 0<=bv) {
	//	Vd3	bp = lp-be.lll() ;
		bi->SetLV1(bIndex,lv) ;
		bi->SetLV2(bIndex,lv) ;
		bi->SetLP1(::ToP3(lp)) ;
		bi->SetLP2(::ToP3(lp)) ;
		bi->SetBV1(bv) ;
		bi->SetBV2(bv) ;
		Vd3	bp = lp-be.lll() ;
		bi->SetBP1(::ToP3(bp)) ;
		bi->SetBP2(::ToP3(bp)) ;
		}
Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.