Dll 跨计算机共享mex64文件

Dll 跨计算机共享mex64文件,dll,matlab,windows-7-x64,Dll,Matlab,Windows 7 X64,我的机器上编译了一个mex64 dll。我使用Matlab2009b和VS2008 Pro来编译dll。dll在我的Matlab安装中运行良好 我希望同事使用dll,因此我将其发送给他,他在尝试使用dll时收到以下错误消息: ???无效的MEX文件“filename.mexw64”:找不到指定的模块 我目前的假设是,这是因为他使用了旧的Matlab版本或缺少我拥有的dll。我运行依赖项检查程序,让他检查是否有列出的所有DLL 我仍在等待他确认他的Matlab版本 还有什么其他原因会导致这种情况,

我的机器上编译了一个mex64 dll。我使用Matlab2009b和VS2008 Pro来编译dll。dll在我的Matlab安装中运行良好

我希望同事使用dll,因此我将其发送给他,他在尝试使用dll时收到以下错误消息:

???无效的MEX文件“filename.mexw64”:找不到指定的模块

我目前的假设是,这是因为他使用了旧的Matlab版本或缺少我拥有的dll。我运行依赖项检查程序,让他检查是否有列出的所有DLL

我仍在等待他确认他的Matlab版本

还有什么其他原因会导致这种情况,Matlab版本会有所不同吗?(我指的是R2009a,当我有R2009B而不是一个巨大的版本差异时)


另一个人有Matlab R2009a。如果我在我的电脑上编译并交给他,mex难道不应该工作吗


这只会留下一个缺少的依赖dll吗?

一般来说,MEX文件应该在不同版本的Matlab中工作;特别是,它们应该是向前兼容的。你是对的;听起来像是dll问题

如果您使用VisualStudio构建它,它可能会链接到VisualC++运行时。这是一组默认情况下未安装在Windows上的库。可下载其“可再发行”版本;让您的同事安装可以解决问题的软件。如果这不起作用,您可以使用检查其他未满足的DLL依赖项

通常,配置Matlab的“mex-setup”以使用随Matlab一起分发的Lcc编译器可能是一种解决方法,但64位Windows AFAIK不支持这种方法


另外,您确定他有64位版本的Windows吗?

问题的另一个可能来源可能是您在调试模式下编译。VisualC++重新分配只支持发布模式。 Dll是MySql访问的包装。我们最终使用了Matlab的ODBC和MySql连接器。

这个问题很奇怪,但我可以确认它的存在

使用正确安装并在路径中的预先构建的matlab库,有时会出现相同的错误。如果我在命令行中输入函数名,该函数将可见并自动完成。但是,在使用.mexw64库文件“cd”进入目录之前,函数不会初始化

>> AndorInitialize('')
Invalid MEX-file 'C:\Program
Files\MATLAB\R2011b\toolbox\andor\AndorInitialize.mexw64': The
specified module could not be found.

>> path

        MATLABPATH

    C:\Program Files\MATLAB\R2011b\toolbox\andor
    C:\Program Files\MATLAB\R2011b\toolbox\andor\camera files
    C:\Program Files\MATLAB\R2011b\toolbox\andor\m files
    ... etc
事实证明,这是由于缺少依赖项,而不应该缺少依赖项。要解决此问题,请使用(免费、轻量级)来确定缺少的内容。mathworks解释了这一点


在我的例子中,两个DLL没有正确显示,即使它们在我的系统和路径中。我将DLL复制到windows/system32文件夹中,库函数现在可以正常工作。特别奇怪的是,几天前(在移动DLL之前),同一个库在我的计算机上工作。

是的,我肯定他有64位版本。我们正在使用dependency walker查看DLL。谢谢我在编译时没有使用调试标志,所以我很确定它处于发布模式。谢谢!这个问题的解决方式有所不同,但我希望这个答案能帮助其他人