私は非常に単純なMATLAB関数を持っている:C#構造体が
function [x,y] = myfunc(a,b,myStruct)
x = a + b + myStruct.score;
y = sprintf('Hello %s',myStruct.name);
私は、次の手順を実行して、C#のからこれを呼び出すしようとしています:
class Program
{
static void Main(string[] args)
{
MLApp.MLApp matlab = new MLApp.MLApp();
matlab.Execute(@"c:\matlab");
object result = null;
var student= new Student {grade = "A", name = "StudentName", score = 90};
matlab.Feval("myfunc", 2, out result, 3.14, 42.0, student);
var res = result as object[];
}
public struct Student
{
public string name;
private string gr;
private int sc;
public string grade
{
get { return gr; }
set { gr = value; }
}
public int score
{
get { return sc; }
set { sc = value; }
}
}
}
残念ながら、これは常にAになり:
mscorlib.dllで 'System.ArgumentException'の未処理例外が発生しました
追加情報:値が予定範囲内に収まらない。
誰も私が逃しているアイデアはありますか?私は基本的にあなたが公にアクセス可能なフィールドを持っている限り、あなたが行くのが良いと言った、MATLABのドキュメントに従った。
のStackTrace:System.RuntimeType.InvokeDispMethodで
システムで (文字列名、のBindingFlags invokeAttr、オブジェクトのターゲットは、[]引数、ブール[] byrefModifiers、のInt32培養、文字列[] namedParametersオブジェクト)。 (String memberName、BindingFlags flags、Object target)RuntimeType.InvokeMember(String name、BindingFlags bindingFlags、バインダーバインダー、オブジェクトターゲット、ObjectArgs、ParameterModifier []修飾子、CultureInfoカルチャ、String [] namedParams) でSystem.RuntimeType.ForwardCallToInvokeMember 、Int32 [] aWrapperTypes、MessageData & msgData) 、MLApp.DIMLApp.Feval(String bst rname、Int32 nargout、オブジェクト& pvarArgOut、オブジェクトarg1、オブジェクトarg2、オブジェクトarg3、オブジェクトarg4、オブジェクトarg5、オブジェクトarg6、オブジェクトarg7、オブジェクトarg8、オブジェクトarg9、オブジェクトarg10、オブジェクトarg11、オブジェクトarg12、オブジェクトarg13、オブジェクトarg14 Object arg15、Object arg16、Object arg17、Object arg18、Object arg19、Object arg20、Object arg21、Object arg22、オブジェクトarg23、オブジェクトarg24、オブジェクトarg25、オブジェクトarg26、オブジェクトarg27、オブジェクトarg28、オブジェクトarg29、オブジェクトarg30、オブジェクトC:\ Users {username} \ documents \ visual studio 2015 \ Projects \ rmtest \ rmtest \ Program.csのrmtest.Program.Main(String [] args)の System.AppDomainの行番号 ._nExecuteAssembly(RuntimeAssemblyアセンブリ、String [] args) at System.AppDomain.ExecuteAssembly(String assemblyFile、Evidence assemblySecurity、String [] args) at Microsoft.VisualStudio.HostingProcess.HostP System.Threading.ExecutionContext.RunでSystem.Threading.ExecutionContext.RunInternal(のExecutionContextのExecutionContext、ContextCallbackコールバック、オブジェクト状態、ブールpreserveSyncCtx) (AT System.Threading.ThreadHelper.ThreadStart_Context(オブジェクトの状態) でroc.RunUsersAssembly() System.Threading.ThreadHelper.ThreadStartでSystem.Threading.ExecutionContext.Run(のExecutionContextのExecutionContext、ContextCallbackコールバック、オブジェクトの状態でのExecutionContextのExecutionContext、ContextCallbackコールバック、状態、ブールpreserveSyncCtxオブジェクト) ) ()
完全なスタックトレース(またはスタックトレースの関連する部分)など、実行時例外の詳細を教えてください。 –
私はスタックトレースを含めました。 – TBD