2010-12-08 11 views
0

私はアプリケーションを構築しており、x264ライブラリをエンコーダとして使用しています。私はMSys/MingWを使ってWindowsシステム用のライブラリを構築しました。ライブラリはデバッグビルドの下でうまく動作します(デバッグビルドとリリースビルドの両方がデフォルトのVS2010設定を使用しています)。しかし、リリースでアクセス違反エラーは、具体的には、x264のライブラリへの最初の呼び出し時にスローされます。Visual Studio 2010のlibx264 - リリースビルドでのメモリエラー

Unhandled exception at 0x00905a4d in StreamTest.exe: 
    0xC0000005: Access violation. 

エラーがこのラインでスローされます。私はどのように考え出すたが

x264_param_default_preset((params), "veryfast", "zerolatency"); 

ライブラリをコンパイルする私は、Windows/Visual Studiosでのメモリアライメントと、x264で期待されていたアライメントとの互換性がないことについて、多くの話をしました。例えば、MSysでコンパイルするとき、私は--enable-memalign-hackを有効にしなければなりませんでした。私は、このエラーの原因が、私のリリースビルドのいくつかの設定を通してしか現れないメモリアライメントの問題に起因するかどうか疑問に思っています。残念ながら、私は詳細についてはほとんど何も知らないので、ここに来ました。

メモリアライメントの問題とこれを引き起こす可能性のあるVisual Studioの設定に関する情報を誰かから教えていただけますか?この問題を解決するその他のヒント/ポインタは、大歓迎です。

ありがとうございました。

編集

以下の答えから:リンクSO質問から

  1. 私は彼がOpenCVのビルドに「デバッガ情報を構築する」を追加印象を受けますか?私はG ++でMSysを介してx264ライブラリを構築しているので、私はこれを行うことができるかどうかはわかりません。私は自分のプロジェクトのビルド設定をチェックしていて、リリースとデバッグの両方でデバッガ情報を持っています。私がその投稿に何かを忘れたかどうかわからない、私に知らせてください。
  2. 私はアプリケーション検証ツールを試しました。非実行可能メモリ(最初のチャンス)でコードを実行する

    VERIFIER STOP 0000000000000650: pid 0x1B18: 
    

    試みを:x264のアプリ検証出力あたりのような非実行可能メモリからコードを実行しようとしているようです。

    0000000000905A4D : Address being accessed. 
    0000000000905A4D : Code performing invalid access. 
    000000000021EA90 : Exception record. Use .exr to display it. 
    000000000021E5A0 : Context record. Use .cxr to display it. 
    

この出力から収集するために何?

もう一度おねがいします。

答えて

2

似たような問題hereを参照してください。それが役立つかどうかを確認してください。

あなたも私の意見リリース最適化スイッチと一緒に-gスイッチをオンに金額「デバッガ情報を構築する」でAppVerifier

EDIT

を通して、あなたのアプリケーションを実行することをEDIT

ポストDEBUGマクロをオフにします。また、デバッガを接続して(Gflagsを使用して)デバッガでプロセスを開始する場合(windbgのコピーを取得し、それをデバッグするために使用する場合)

Appveriferがプロセスを停止すると、.cxrコマンドを使用してコンテキスト情報を取得します。それは問題を指摘するのに役立つはずです。

+0

入力いただきありがとうございます。あなたの提案の結果をOPに追加しました。コメントしてください! – DeusAduro

+0

投稿を編集しました –

+0

すべての助けをいただきありがとうございます。私は自分のpthreadビルドの問題にバグを追跡することができました。適切なMSVCベースのpthreadビルドを手に入れました。今はうまくいきます。乾杯。 – DeusAduro

関連する問題