为了工作,我正在将CUDA SDK附带的Image Deoising程序转换为MATLAB程序。据我所知,我已经完成了MATLAB所需的所有必要更改,但是当我尝试在其上调用mex时,MATLAB会返回一堆链接错误,我不知道如何修复。如果有人对我可能做错了什么有任何建议,我将不胜感激。
我给MATLAB的命令是:
mex imageDenoisingGL.cpp -I..\..\common\inc -IC:\CUDA\include -L..\..\common\lib -lglut32
MATLAB的输出是一堆:
imageDenoisingGL.obj : error LNK2019: unresolved external symbol __imp__cutCheckCmdLineFlag@12 referenced in function "void __cdecl __cutilExit(int,char * *)" (?__cutilExit@@YAXHPAPAD@Z)
我正在跑步:
Windows XP x32
Visual Studio 2005
MATLAB 2007a
答案 0 :(得分:1)
如果您要从CUDA转换为MATLAB,那么为什么还要调用CUDA函数?
未解决的外部符号 的 __ imp__cutCheckCmdLineFlag 强> @ 12
答案 1 :(得分:1)
您需要将CUDA库链接到MEX文件。看起来您还在使用CUDA SDK中的一些"cutil.h"
内容(例如cutCheckCmdLineFlag
),因此您不仅需要链接cudart库,还需要链接cutil。即你可能需要添加像
-Lc:\CUDA\lib -lcudart -lcuda -L<path-to-cutil.lib> -lcutil
到您的MEX命令行。
答案 2 :(得分:0)
高性能Mark在他的评论中建议直接在Visual Studio下使用CUDA编译mexfiles。在页面
Compiling CUDA mex files with Visual Studio
描述了如何在Visual Studio下使用CUDA编译mexfiles。还有一个可下载的Visual Studio示例项目。
该程序已针对CUDA 5.0,Visual Studio 2010和Matlab 2010a / 2012b进行了测试,但也许对使用其他版本的上述产品的人也有兴趣。