1 回答

TA貢獻(xiàn)1951條經(jīng)驗(yàn) 獲得超3個(gè)贊
沒用過matlab編寫dll,不過你的問題應(yīng)該是生成的dll的問題,可以用dependcy看下你的dll引用了哪些別的dll,然后把沒有的這些dll拷貝進(jìn)system32或同目錄下。
你的matlab生成的dll應(yīng)該是共享使用其它dll,而且還得用external C 導(dǎo)出函數(shù)。
因?yàn)槲疫@里沒有 MWArray.dll ,所以無法運(yùn)行成功,但是通過對(duì) class_dotnet.dll的源碼的分析(你也可以用Reflector查看),在Class_dotnet的靜態(tài)構(gòu)造函數(shù)中, mcr需要一個(gè)Stream來創(chuàng)建實(shí)例,該Stream通過讀取class_dotnet.dll中包含的 class_dotnet.ctf 資源來實(shí)例化對(duì)象。 由于你的 class_dotnet.dll運(yùn)行在另一個(gè)進(jìn)程中,所以使用 executingAssembly.GetManifestResourceNames()是無法獲取到 class_dotnet.ctf 這個(gè)資源文件的,因?yàn)?class_dotnet.ctf 存在于 calss_dotnet.dll 程序集中,而非你的調(diào)用進(jìn)程中,可以使用下面的方式修改: 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")
- 1 回答
- 0 關(guān)注
- 385 瀏覽
添加回答
舉報(bào)