vs2005引用 matlab R2009a编译的DLL出现问题

我写了一个很简单的function,用 matlab R2009a 生成一个DLL,再用C#去引用,一开始实例化类的时候就报错,后来在网上查了一些资料,照着别人说的装了一个东西,现在可以调用了,但是还是弹出一个错误,Runtime Error----------R6034。。有很多人遇到这个问题,但是都说糊里糊涂的就解决了,我试了也不行,请大仙显灵~~

哈士奇WWW
浏览 354回答 1
1回答

饮歌长啸

没用过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")
打开App,查看更多内容
随时随地看视频慕课网APP