0

Matlab Builder NE を使用して、Matlab 2011a で COM オブジェクトをコンパイルしようとしています。なんとかビルドしてパッケージ化し、デプロイし、COM サーバーを起動することさえできました。Matlabで次のコマンドを使用しています

c = actxserver('MyFirstComServer.Class1');

ただし、このハンドルでメソッドを実行しようとすると、次のようなエラー メッセージが表示されます。

c.GetNames(0,'')
??? Invoke Error, Dispatch Exception:
ソース: MyFirstComServer.Class1.1_0
説明: MCR インスタンスが利用できません

それに関連するものを Web で見つけましたが、役に立ちませんでした http://www.mathworks.com/support/solutions/en/data/1-2VS4TC/index.html?product=MN&solution=1- 2VS4TC

何をすべきか誰にも分かりませんか?

編集: Matlab からコンポーネントを呼び出す場合にのみ
問題が発生することがわかりました。これは、MCR の混乱で何かを行う必要がある可能性があります。COM コンポーネントは、Matlab が使用するのと同じ MCR を使用します。

4

1 に答える 1

0

この問題は、Matlabからコンポーネントを呼び出した場合にのみ発生することがわかりました。これは、MCRの混乱を伴う可能性があり、COMコンポーネントはMatlabが使用するのと同じMCRを使用します。

Edit(1) BuilderNEマニュアルから。

MCRを使用したテストMCRを使用してテストする場合、MCRはMATLABのインスタンスであることに注意してください。このため、MCRをMATLABにロードすることはできません。たとえば、MATLAB Builder NEのDeploymentToolを使用して汎用COMコンポーネントを構築する場合は、DLLを生成します。次に、プロセスをMATLABにロードするactxserverなどのアプリケーションを使用してコンポーネントをテストしようとすると、MCRがMATLABに効果的にロードされ、次のようなエラーが発生します。mwsamp.mymagic(3、[]、[]) ??? 呼び出しエラー、ディスパッチ例外:ソース:tmw1.Class1.1_0説明:MCRインスタンスは使用できません。したがって、MCRでテストする前に、サードパーティプロセスの動作を理解してください。これらのプロセスの動作について不明な点がある場合は、開発者またはシステム管理者に問い合わせてください。

于 2011-12-18T16:48:42.860 に答える