FAQ
エラー:ArcObjects が GDIplus を呼び出すとき、ArcGIS Engine アプリケーションがクラッシュする

ナレッジ番号:5253 | 登録日:2023/07/26 | 更新日:2023/12/28

エラー メッセージ

バージョン 10 において、ArcGIS Engine コントロールを使用した COM ベースのアプリケーションが、次のような未処理例外エラー メッセージ ダイアログをともなって中断することがあります。

"Unhandled exception as 0x7x91b21a (ntdll.dll) in
ArcGIS_Engine_10_PageLayout_Issues.exe:0xC0000005: Access
violation writing location 0x00000010."

【原因】

このクラッシュは、GDI+ が正しく初期化される前に、GDI+ を使用している ArcGIS コンポーネントによって引き起こされます。この問題は、Esri が現在調査中ですが、現時点では次の回避方法のいずれかを使用してください。

【解決方法/回避方法】

このエラーに対しては、2 つの回避方法があります。

回避方法 1:

GDI+ オブジェクトを作成する前に、GdiplusStartup を呼び出す必要があります。そして、GdiplusShutdown を呼び出す前に、すべての GDI+ オブジェクトを削除する(それらをスコープ外にする)必要があります。次の C++ コードをアプリケーションに追加してください。

Windows.h
Gdiplus.h

アプリケーションを初期化します(たとえば、X() 関数内で)。

Gdiplus::GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR           gdiplusToken;
Gdiplus::GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);

非初期化します。

Gdiplus::GdiplusShutdown(gdiplusToken);

回避方法 2:

ダイアログ ボックスに ToolbarControl を追加します。この操作は GDI+ を初期化します。

備考:
プラットフォーム          Windows XP, Vista, Win 7
ESRI Art. Number         38311

メタデータ

種類

製品