Iwao Dev

気付いたことをメモしています.

この画面は、簡易表示です

2019年7月4日

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)) ;
		}
この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

  にほんブログ村 IT技術ブログへ



    top

    %d人のブロガーが「いいね」をつけました。