最近用MATLAB寫了個小程式,回傳值是一個1*14的矩陣,然后把這個程式編譯成了dll檔案添加在了VB.NET的工程中,但是在VS2010中呼叫該dll的函式回傳陣列時,發現沒法讀取陣列中具體的元素,總提示索引超出了界限,經除錯發現是維度"0"的索引"-1"超出范圍。我知道VB.NET和MATLAB中對陣列下標的定義不同,但是不知道要如何才能解決碰到的這個錯誤,如果有那位高手能告知一二,不甚感激。
這是VB.NET程式及報錯:

這是陣列的具體回傳值情況:

這是錯誤的具體情況:

這是MATLAB的源程式:
uj5u.com熱心網友回復:
ErrorFlag引數在Back函式中定義成ByRef了么?uj5u.com熱心網友回復:
不要做A語言代碼修改為B語言代碼的無用功。也不要做用A語言代碼直接呼叫B語言代碼庫這樣復雜、這樣容易出錯的傻事。
只需讓A、B語言代碼的輸入輸出重定向到文本檔案,或修改A、B語言代碼讓其通過文本檔案輸入輸出。
即可很方便地讓A、B兩種語言之間協調作業。
比如:
A將請求資料寫到檔案a.txt,寫完后改名為aa.txt
B發現aa.txt存在時,讀取其內容,呼叫相應功能,將結果寫到檔案b.txt,寫完后洗掉aa.txt,改名為bb.txt
A發現bb.txt存在時,讀取其內容,讀完后洗掉bb.txt
以上A可以替換為任何一種開發語言或開發環境,B可以替換為任何一種與A不同的開發語言或開發環境。
除非A或B不支持判斷檔案是否存在、檔案讀寫和檔案更名。
但是誰又能舉出不支持判斷檔案是否存在、檔案讀寫和檔案更名的開發語言或開發環境呢?
共享臨時文本檔案這種行程之間的通訊方法相比其它方法的優點有很多,下面僅列出我現在能想到的:
·行程之間松耦合
·行程可在同一臺機器上,也可跨機,跨作業系統,跨硬體平臺,甚至跨國。
·方便除錯和監視,只需讓第三方或人工查看該臨時文本檔案即可。
·方便在線開關服務,只需洗掉或創建該臨時文本檔案即可。
·方便實作分布式和負載均衡。
·方便佇列化提供服務,而且幾乎不可能發生佇列滿的情況(除非硬碟空間滿)
·……
uj5u.com熱心網友回復:
每次看到樓上的這種回復,我怎么總感覺非常惡心呢……
-_-!!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/116726.html
