.NET 統合とカプセル化データの列挙を使用する DLL を作成するときに、MATLAB R2010b で問題が発生しました。
例:
- MATLAB で使用される .NET アセンブリがあります。「MyAssembly」(MyAssembly.dll) と呼びましょう。
Matlab列挙型クラス「OpenMode」があります
このクラスは .NET 列挙を使用します: "MyAssembly.OpenMode" Matlab 列挙を介して .NET 列挙にアクセスするような方法で (私の場合はキャスト型に必要です):classdef OpenMode methods function obj = OpenMode(netType) obj.Net = netType; end end properties Net end enumeration ReadOnly (MyAssembly.OpenMode.ReadOnly) ReadWrite (MyAssembly.OpenMode.ReadWrite) end end
netElem = OpenMode.ReadOnly.Net; cls = class(netElem) cls = MyAssembly.OpenMode
エクスポートする必要がある Matlab 関数:
function retVal = MyFunction(inputs) NET.addAssembly('MyAssembly.dll'); flag = OpenMode.ReadOnly; netFlag = flag.Net; % Some code... end
- Matlab に .NET アセンブリを追加します (チェック中)
NET.addAssembly('MyAssembly.dll')
- Dll をコンパイルしてみます。
...そしてエラーを取得します:mcc -B csharedlib:MyLib MyFunction
Depfun error: 'Undefined variable "MyAssembly" or class "MyAssembly.OpenMode.ReadOnly".' ??? Error using ==> mcc Error executing mcc, return status = 1 (0x1).
mcc コンパイラはコード列挙で「MyAssembly」が存在することを検出しませんが、次の関数は正常にコンパイルされます。
function retVal = MyFunction(inputs)
netflag = MyAssembly.OpenMode.ReadOnly;
% Some code...
end
MATLAB で同様の問題に直面し、解決策を見つけた場合は、どうすればよいか教えてください。
ありがとう!
よろしく、アイアン