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 关注
- 353 浏览
添加回答
举报