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")
- 1 回答
- 0 關注
- 388 瀏覽
添加回答
舉報