2013-07-25 70 views
7

我已經使用Matlab R2012a編譯成.net DLL文件的一些matlab函數。並且一切都按照它應該的方式工作。我在Windows 7 64位上使用WPF/C#.net 4.5,我的程序工作正常。在Windows 8上的Matlab生成器NE/MCR 8

但是,我們現在正在轉移和測試我們的程序在Windows 8專業版。我們在運行時遇到問題 - 我們當然使用MCR R2012a來運行.dll文件。 我們無法加載在win8中的類或函數,我們的程序崩潰。

有沒有人遇到過這個問題?如果我們使用Matlab R2013a編譯函數,它會有幫助嗎?

+0

這將有助於瞭解程序崩潰時的一些行爲。任何潛在客戶如特殊錯誤,特定退出代碼,事件日誌中的任何內容等? – SeanKilleen

+0

是的。出現錯誤: 託管(v4.0.30319)'已退出,代碼爲-1073741819(0xc0000005)'訪問衝突'。 – Gilad

+0

考慮到錯誤的性質,您是否確保運行它的帳戶擁有應用程序將使用的任何文件夾的完全訪問權限?我還會看到,如果右鍵單擊該程序並選擇「以管理員身份運行」有幫助。可能是在Win8上,尋求在這種情況下做一些事情會使UAC系統稍微敏感一些。請確認你是否嘗試過這些東西。 – SeanKilleen

回答

11

該溶液到MATLAB問題窗口圖8是在裝配文件添加

[assembly: MathWorks.MATLAB.NET.Utility.MWMCROption("-nojit")] 

我不知道這是爲什麼起作用。 nojit-意味着不在時間編譯器中創建二進制文件。

但是當我添加這個。它也適用於Windows 8 x64。使用相同的MCR

0

我對MCR的大部分問題都與PATH變量的錯誤值有關。當您在計算機上安裝多個MCR時,或者有時甚至只安裝一個MCR時,可能會發生這種情況。由於您收到訪問衝突錯誤,我猜測系統可以找到MCR dll,但它找到了錯誤的(例如32位而不是64位)。仔細檢查PATH環境變量並確保它指向MCR dll的正確位置。

+0

我知道這個問題,但是這在Windows 7 x64中工作正常,並且不能在win 8 x64上使用相同的配置。相同的MCR R2012a X64。 – Gilad

+0

當matlab被初始化時(當你第一次創建生成的類的實例時),它會立即失敗還是隻有在調用方法時纔會失敗? –

+0

當您第一次加載類時,它會失敗。 – Gilad