問題タブ [mex]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
wcf - C#WCFは企業ファイアウォールの内部では機能しますが、外部では機能しません
WCFJSONPWebサービスで「興味深い」エラーが発生しています。それは私が持っている唯一のものであり、1つのメソッドしか公開していません。内部でWebブラウザーを介してサービスにアクセスすると、MEXが有効になっていない(true)というメッセージがポップアップ表示されます。私がネットワークの外部からそれをヒットした場合(私の会社のマシンを使用していない場合のように)、それはただ座って、最終的にタイムアウトします。URLは次のとおりです:http://demo.rivworks.com/services/Negotiate.svc。この動作を引き起こしている可能性があるものについてのアイデアはありますか?
web.configは次のとおりです。
コードは次のとおりです。
私はここでいくつかのことを求めています:
- ローカルネットワークの外部からヒットできないのはなぜですか?
- MEXを正しく機能させるにはどうすればよいですか
注:私はここにあるJSONPクラスを使用しています:http://msdn.microsoft.com/en-us/library/cc716898.aspx
gcc - matlab mexファイルの共有ライブラリの場所:
libhdf5を使用するmatlabmex関数を作成しようとしています。私のLinuxインストールでは、libhdf5-1.8共有ライブラリとヘッダーが提供されます。ただし、私のバージョンのMatlabであるr2007bは、1.6リリースのlibhdf5.soを提供します。(Matlab.mat
ファイルは明らかにhdf5をブートストラップします)。mexをコンパイルすると、Matlabでsegfaultが発生します。libhdf5のバージョンを1.6にダウングレードすると(長期的なオプションではありません)、コードはコンパイルされて正常に実行されます。
質問:この問題を解決するにはどうすればよいですか?mexコンパイルプロセスに/opt/matlab/bin/glnxa64/libhdf5.so.0ではなく/usr/lib64/libhdf5.so.6に対してリンクするように指示するにはどうすればよいですか?コンパイルでこれを使用しようとすると-Wl,-rpath-link,/usr/lib64
、次のようなエラーが発生します。
ack。最後の手段は、hdf5-1.6.5ヘッダーのローカルコピーをダウンロードしてそれで実行することですが、これは将来を保証するものではありません(Matlabバージョンのアップグレードは将来的に行われます)。何か案は?
編集:Ramashalankaの優れた提案によると、私は
A) 3つのコマンドmex -v
を取得するために呼び出されます。gcc
最後はリンカーコマンドです。
-v
B)コマンドを取得するためにそのリンカーコマンドをaで呼び出しましたcollect
。
C)collect2 -v -t
それと残りのフラグを呼び出しました。
私の出力の関連部分:
したがって、実際にはlibhdf5.so
from/usr/lib64
が参照されています。ただし、これは環境変数によってオーバーライドされていると思います。環境変数は、私のバージョンのMatlabが実行時に自動的に設定するため、たとえば、などLD_LIBRARY_PATH
の独自のバージョンを見つけることができます。libmex.so
このcrt_file.c
例は、私が使用している関数を使用していないb / c(H5DOpen
1.6から1.8への移行で署名が変更された(はい、私は使用しています-DH5_USE_16_API
))、または可能性は低いですがb/のいずれかで機能すると思います。 chdf5を必要とするMatlab内部の部分にはヒットしません。ack。
c++ - MATLAB の任意のコードの実行
Linuxで自動グレーダープログラムを書いています。MATLAB で書かれた採点者が何人かいるので、それらをまとめて、学生にプログラムを実行させて課題を出させ、課題を選択させたいと考えています。私は C++ メイン プログラムを使用しています。このプログラムには、mcc でコンパイルされた MATLAB ライブラリがリンクされています。
具体的には、私のプログラムは、さまざまな matlab プログラムの名前とその他の情報の構成ファイルを読み取ります。次に、その情報を使用して、学生に選択肢を提示します。したがって、割り当てが変更、追加、または削除された場合、構成ファイルを変更するだけで済みます。
次に、プログラムは mcc でコンパイルされた正しい matlab ライブラリを呼び出すという考え方です。ただし、これは、グレーダーが変更された場合、ライブラリを再コンパイルする必要があることを意味します。さらに悪いことに、グレーダーが追加または削除された場合、プログラム全体を再コンパイルする必要があります。したがって、グレーダーの m ファイルを直接呼び出す、単純で変更されない 1 つの matlab ライブラリ関数が必要です。私は現在、メインプログラムから渡された文字列に eval を使用するライブラリを持っています。
問題は、私がこれを行うと、どうやら、mcc がグレーダーの m コードをそれ自体に吸収することです。コンパイル後に grader m コードを変更しても効果はありません。これが起こらないことを望みます。Mathworks は、matlab を完全にバイパスする可能性があるため、これを行うことを望んでいない可能性があることに気付きました。それは私の意図ではなく、完全な matlab インストールを必要とするソリューションに満足しています。
私の考えられる解決策は、メイン プログラムに mex ファイルを使用するか、メイン プログラムに mcc ライブラリを呼び出してから、mex ファイルを呼び出し、適切なグレーダーを呼び出すことです。最初の解決策をためらう理由は、それを機能させるためにコードにどれだけの変更を加える必要があるかわからないからです。私のコードは C ではなく C++ です。ただし、2 番目の解決策は、より複雑で、最終的には同じ問題が発生する可能性があります。
それで、この状況について何か考えはありますか?どうすればいいですか?
c++ - MEX-ファイルからDAQボードへのループでパルスを出力
MatlabからDAQボードにループ(40 kHz)でデジタルパルスを出力するには、MEXファイルを使用する必要があると考えました。DAQボードベンダーのAPIがいくつかありますが、それらが役立つかどうかはわかりません。これは、MEX-FileとAPIに関するMathworks Webサイトの大きなドキュメントであり、混乱を招きます。だから私はここで誰かが私を方向付けることができるかどうか、またはこれを実現するためのサンプルコードを見せてくれるかどうか尋ねています!!
c++ - mexのopenmp:stackoverflowエラー
私はスタックオーバーフローエラーを取得する次のコードの一部を取得しました
共有で宣言された変数は、malloc によって作成されます。そしてそれらは大量のメモリを消費します
上記のコードに関して 2 つの質問があります。1) 並列 for ループに入る前にスタック オーバーフロー エラー (セグメンテーション違反) が発生するのはなぜですか? シーケンシャル モードで実行すると問題なく動作します.... 2) 上記の「normalized_p_gn」のように各スレッドにメモリを動的に割り当てる権利がありますか?
よろしくエドウィン
matlab - mex関数からmatlab構造体のフィールドの行列にアクセスするにはどうすればよいですか?
mex関数からmatlab構造体のフィールドに格納されている行列にアクセスする方法を理解しようとしています。
それはひどく長い風です...私に説明させてください:
次のように定義されたmatlab構造体があります。
行列の最初の要素(c用語ではmatrix [0] [0])へのポインターを受け取りたいmex関数がありますが、その方法がわかりません。それ。
私は以下を試しました:
これが最終的に印刷されるのは次のとおりです。
私はまた、ネストされた関数呼び出しではおそらくそれが奇妙なものであると考えて、次のバリエーションを試しましたが、役に立ちませんでした:
私がやろうとしていること、または私が潜在的に間違っていることをどのように達成できるかについて誰かが考えを持っていますか?
ありがとう!
編集:yukのコメントによると、doubleの1次元配列であるarrayというフィールドを持つ構造体に対して同様の操作を実行してみました。
配列を含む構造体は次のように定義されます。
mex関数内からarrayStructで次のことを試しました。
...しかし、出力は以前に印刷されたものに従いました:
c++ - MATLAB で文字列配列を作成するには?
文字列のベクトルを C++ から MATLAB に渡したいと考えています。などの利用可能な関数を使用してみmxCreateCharMatrixFromStrings
ましたが、正しい動作が得られません。
だから、私はこのようなものを持っています:
問題は、このベクトルを matlab 環境にどのように取得するかです。
私の目標は、実行できるようにすることです:
matlab - MATLAB Mex ファイル
組み込みの MATLAB m- ファイルの mex ファイルを取得する方法はありますか? はいの場合、どのように?いいえの場合、それは私が自分で C コードを書かなければならないということですか?
c - 64ビットマシンでファイルを処理していますが、32ビットマシンで開発しています
64 ビット Windows マシンで C 言語の Mexfunction を使用して、matlab で TDMS ファイルを読み取る予定ですが、32 ビット Windows マシンでアプリを開発します。32 ビット マシンと 64 ビットでは、変数のサイズに違いがあることを知っています。私は多くの fread(.. sizeof(type)..) を使用しました。64ビットマシンで実行すると問題になりますか? もしそうなら、どうすればそれを 64 ビット mahince に移植できますか?
ありがとう