1

MATLAB で mex ファイルを使用するコード (誰かから送られてきた) を実行しようとしています。mex ファイルをコンパイルすることはできましたが、これらのファイルを呼び出すコードを実行すると、以下に示すエラーが発生します。ここで何が起こっているのかよくわからないので、助けていただければ幸いです。

Segmentation violation detected at Mon Sep 10 16:26:11 2012
------------------------------------------------------------------------

Configuration:
  Crash Decoding  : Disabled
  Current Visual  : 0x22 (class 4, depth 24)
  Default Encoding: UTF-8
  GNU C Library   : 2.11.3 stable
  MATLAB Root     : /cae/apps/data/matlab-2012a
  MATLAB Version  : 7.14.0.739 (R2012a)
  Operating System: Linux 3.2.0-0.bpo.2-amd64 #1 SMP Fri Jun 29 20:42:29 UTC 2012 x86_64
  Processor ID    : x86 Family 6 Model 42 Stepping 7, GenuineIntel
  Virtual Machine : Java 1.6.0_26-b03 with Sun Microsystems Inc. Java HotSpot(TM) 64-Bit Server VM mixed mode
  Window System   : The X.Org Foundation (11006000), display localhost:10.0

Fault Count: 1


Abnormal termination:
Segmentation violation
4

1 に答える 1

4

MEX コードには間違いなくバグがあります。2 つの可能性: 1. エラーが不十分なエラー チェックであり、無効なパラメーター (不適切な型、サイズ、順序など) を使用して関数を呼び出している。 2. 確認済みの一連のパラメーターを使用している場合作成者のマシンで動作する場合、おそらくコードは移植性がなく、悪い仮定をしています (32/64 ビット、Windows/Linux など)。

ステップ 1: 引数を確認します。可能であれば、作成者のコンピューターで検証された最小限のテスト セットを使用します。

ステップ 2: デバッガーを介して同じコードを実行します: http://www.mathworks.com/help/matlab/matlab_external/debugging-cc-language-mex-files.html これは、クラッシュの場所を特定するのに役立ちます。次に、コードを修正します:)

于 2012-09-10T22:00:41.103 に答える