找不到.exp

时间:2016-03-11 14:28:40

标签: matlab mex

有一段时间我一直在用自己的CUDA函数编译一些mex文件。我有nvcc设置,一切都编译好,运行没有问题。

然而,在编译时

 mex -largeArrayDims ./Source/Atb.cpp ./Source/voxel_backprojection.cu ./Source/voxel_backprojection2.cu -outdir ./Mex_files

编译成功后,我总是收到以下消息

Building with 'NVIDIA CUDA Compiler'.
Could Not Find C:\CUDA_MATLABtests\MyToolbox\Mex_files\Atb.exp

Could Not Find C:\CUDA_MATLABtests\MyToolbox\Mex_files\Atb.exp

为什么我收到此消息,如果代码似乎正常工作?

我应该拥有它们吗?如果是这样,我应该手动创建它们吗?怎么样?

1 个答案:

答案 0 :(得分:4)

在Visual Studio中,创建export (.exp) file以便其他人可以链接到您的库。

对于典型的mex文件,没有人会链接它,因此不需要.exp个文件。这就是为什么你的mex文件运行得很好,尽管MATLAB发出了这个警告。它们在mex文件环境中的无用性进一步得到了MATLAB在清理过程中尝试删除它们的事实的验证。

del PATH/Atb.pbj PATH/Atb.exp PATH/atb.manufest

由于Visual Studio默认生成这些文件(并且doesn't seem to be a good way to disable this behavior),我相信在编译代码后, 应在您的计算机上 可能实际上是MATLAB的mex配置没有正确处理where to place these files,并且它们最终会在输出目录以外的其他位置。

我目前没有Visual Studio,但您可能会在本地计算机上搜索该.exp文件,只是为了验证它确实已创建并且它只是放置在MATLAB不在的地方期待。如果是这种情况,您可以调整mexopts来处理此问题。

话虽这么说,这个警告对于你的典型mex文件是无害的,可以安全地被忽略。

MATLAB Answers post on the topic