私はwin7 64ビットホームエディションを使用しています。私のプロジェクトはすべて、C++ を使用して 32 ビット環境でビルドするように設定されています。MDd ランタイムを使用して、デバッグ モードで libpng を正常にビルドしました。2 つのアクティブなプロジェクトがあります。私の最初のプロジェクトは VS2010 で、2 番目のプロジェクトは VS2012 です。私のコンピューター内で、このライブラリのパスに設定された環境変数を作成して、プロジェクトでのリンクを容易にしました。私のプロジェクトは両方とも MDd と、libpng が使用するのと同じマルチバイトを使用しています。私のパスと依存関係はすべて正しいです。また、ビルドされた実行可能ファイルと同じディレクトリ内の両方のプロジェクトに libpng16.dll をコピーしました。両方のプロジェクトを正常にコンパイルおよびビルドできます。私の VS2010 プロジェクトはロードされた PNG グラフィックを実行してレンダリングしますが、VS2012 のプロジェクトはそうではありません。
check = fread( data, 1, length, png_voidcast( png_FILE_p, png_ptr->io_ptr ) );
pngrio.c 内。このエラーを与える:
First-chance exception at 0x77308E19 (ntdll.dll) in Game_debug.exe: 0xC0000005:
Access violation writing location 0x00000014.
私のVS2010プロジェクトで動作することがわかっており、VS2012プロジェクトでpngをロードするために同じ実装を使用しているため、問題はソースコード内にはありません。私がリンクしているライブラリがVS2010でビルドされたことが違いを生むのか、VS2010でビルドされたライブラリ内に私のVS2012プロジェクトが気に入らないコマンドライン/コンパイラ設定があるのか 、私にはわかりません。私はpngのドキュメントを読み、何時間もオンラインで検索しましたが、関連するものは何も見つかりませんでした. あらゆる種類のヘルプ、ヒント、ポインター、または提案は、私に大いに役立ちます。