2017-04-13 66 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上述步驟解決我的問題... :)