亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

vs2005引用 matlab R2009a編譯的DLL出現問題

vs2005引用 matlab R2009a編譯的DLL出現問題

哈士奇WWW 2018-10-10 18:06:02
我寫了一個很簡單的function,用 matlab R2009a 生成一個DLL,再用C#去引用,一開始實例化類的時候就報錯,后來在網上查了一些資料,照著別人說的裝了一個東西,現在可以調用了,但是還是彈出一個錯誤,Runtime Error----------R6034。。有很多人遇到這個問題,但是都說糊里糊涂的就解決了,我試了也不行,請大仙顯靈~~
查看完整描述

1 回答

?
飲歌長嘯

TA貢獻1951條經驗 獲得超3個贊

沒用過matlab編寫dll,不過你的問題應該是生成的dll的問題,可以用dependcy看下你的dll引用了哪些別的dll,然后把沒有的這些dll拷貝進system32或同目錄下。

你的matlab生成的dll應該是共享使用其它dll,而且還得用external C 導出函數。


因為我這里沒有 MWArray.dll ,所以無法運行成功,但是通過對 class_dotnet.dll的源碼的分析(你也可以用Reflector查看),在Class_dotnet的靜態構造函數中, mcr需要一個Stream來創建實例,該Stream通過讀取class_dotnet.dll中包含的 class_dotnet.ctf 資源來實例化對象。 由于你的 class_dotnet.dll運行在另一個進程中,所以使用 executingAssembly.GetManifestResourceNames()是無法獲取到 class_dotnet.ctf 這個資源文件的,因為 class_dotnet.ctf 存在于 calss_dotnet.dll 程序集中,而非你的調用進程中,可以使用下面的方式修改: AssemblyName refAssemblyName = executingAssembly.GetReferencedAssemblies().FirstOrDefault(o => o.FullName.Contains("class_dotnet")); if (refAssemblyName == null) throw new ArgumentNullException(); Stream manifestResourceStream = Assembly.Load(refAssemblyName).GetManifestResourceStream("class_dotnet.ctf")

查看完整回答
反對 回復 2018-10-15
  • 1 回答
  • 0 關注
  • 388 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號