我有一个非常简单的MATLAB函数:C#结构matlab实现功能
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; }
}
}
}
很不幸,这总是导致:
类型 'System.ArgumentException' 未处理的异常出现在mscorlib.dll
其他信息:值不在预期范围内。
任何人有任何想法我错过了什么?我跟着MATLAB文档,你有一个公开访问的领域,那么你是好去基本上说只要。
堆栈跟踪:
在System.RuntimeType.InvokeDispMethod(字符串名称,的BindingFlags invokeAttr,对象目标,对象[]指定参数时,布尔[] byrefModifiers,培养的Int32,字符串[] namedParameters) 在系统。 RuntimeType.InvokeMember(String name,BindingFlags bindingFlags,Binder binder,Object target,Object [] providedArgs,ParameterModifier [] modifiers,CultureInfo culture,String [] namedParams) at System.RuntimeType.ForwardCallToInvokeMember(String memberName,BindingFlags flags,Object target ,的Int32 [] aWrapperTypes,MessageData & MSGDATA) 在MLApp.DIMLApp.Feval(字符串BST rName,Int32 nargout,Object & pvarArgOut,Object arg1,Object arg2,Object arg3,Object arg4,Object arg5,Object arg6,Object arg7,Object arg8,Object arg9,Object arg10,Object arg11,Object arg12,Object arg13,Object arg14 ,对象arg15,对象arg16,对象arg17,对象arg18,对象arg19,对象arg20,对象arg21,对象arg22,对象arg23,对象arg24,对象arg25,对象arg26,对象arg27,对象arg28,对象arg29,对象arg30,对象arg31,Object arg32) at C:\ Users {username} \ documents \ visual studio 2015 \ Projects \ rmtest \ rmtest \ Program.cs中的rmtest.Program.Main(String [] args):line 20 at System.AppDomain .nExecuteAssembly(RuntimeAssembly assembly,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 callback,Object state,Boolean preserveSyncCtx)时,System.Threading.ThreadHelper.ThreadStart_Context(对象状态) 上的roc.RunUsersAssembly() 执行上下文执行上下文,ContextCallback回调,对象状态,布尔preserveSyncCtx) 在System.Threading.ExecutionContext.Run(ExecutionContext中的ExecutionContext,ContextCallback回调,对象状态) 在System.Threading.ThreadHelper.ThreadStart()
您可以从运行时异常中提供更多详细信息,例如完整的堆栈跟踪(或堆栈跟踪的相关部分)。 –
我已经包括堆栈跟踪。 – TBD