2017-04-13 65 views
0

我试图出口用Matlab R2013a一个.dll(.NET程序集)(8.1.0.604)与两数相加的一个简单的add函数,并试图用这个。 Visual Studio 2013中的c#的dll文件。我已经添加了对Matlabtest.dll和MWArray.dll的.dll文件的引用。现在,当我试图使类“添加”(来自Matlabtest.dll的类的名称)的对象时,visual studio停止工作而没有任何错误,并且无法创建类的对象。请给我任何解决方案和一些参考代码等。我缺少什么步骤需要建议和帮助。进口MATLAB .dll文件在Visual Studio C#2013造成问题

这里是我的matlab函数

function output = adding(a,b) 
output = a + b; 
end 

这里是一个按钮,我的C#代码点击

using MathWorks.MATLAB.NET.Arrays; 
using MathWorks.MATLAB.NET.Utility; 


using MatlabTest; 

namespace TestingMatlab 
{ 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window 
    { 
     private MatlabTest.Adding obj; 

     public MainWindow() 
     { 
      InitializeComponent(); 

     } 

     private void btn_sum_Click(object sender, RoutedEventArgs e) 
     { 
      try 
      { 
       MWArray a; 
       MWArray b; 

       a = (MWArray)txt_num1.Text; 
       b = (MWArray)txt_num2.Text; 

       Adding obj = new Adding(); 

       MWArray output = obj.adding((MWArray)a, (MWArray)b); 

       Console.WriteLine(output.ToString()); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
      }      
     } 
    } 
} 
+0

我相信这是x86的dll文件。我会尝试,而不是任何CPU。 – msitt

+0

感谢您的回复@msitt,但我使用的是x64 dll和Matlab + visual studio。所以我的CPU被选中x64而x86引发异常。 –

+0

我注意到你将一个字符串转换为MWArray,但我不认为这会导致崩溃......我假设你安装了正确的MCR版本? – msitt

回答

1

所以,挣扎后,我回来了一个解决方案,使别人可以得到帮助。问题是实际上MCR初始化函数和解决它,我按照下面的步骤“的MCR实例无法初始化”

  1. 在Visual Studio

  2. 改变了目标框架.NET Framework 3.5的
  3. WhileExporting.dll在Matlab中使用deploytool转到设置并且 取消选中将CTF存档嵌入到应用程序中。

  4. 趁现在出口the.dll你将有一个projectname.CTF文件复制该文件到Visual Studio调试目录如C:\ Program \ VS \ Debug \ projectname.CTF
  5. 检查您是否使用x86或x64体系结构和 导出了.dll,然后在Visual Studio中相应地选择Platform Target。

Follwing上述步骤解决我的问题... :)