Error in generating code with custom FFT library in Matlab Coder

조회 수: 6 (최근 30일)
TripleSSSS
TripleSSSS 2018년 11월 13일
댓글: Ryan Livingston 2018년 11월 14일
I'm trying to use custom FFT library in matlab coder. (this feature introduced in 2017)
I downloaded the latest FFTW library from their website, I built the wrapper class for custom FFT library and executed the coder.
The Matlab coder returns several compilation errors.
Which means that the generated code doesn't compile.
I'm giving here a code example. In order to replicate the problem you'll need to download the FFTW library
Here is the Foo() function I'm trying to compile
function [voxelAfterFFT] = Foo()
v = single(magic(16));
voxel = repmat(v,1,1,16);
voxelAfterFFT = fftn(voxel);
end
Here is the custom FFT class I build
%#codegen
classdef CustomWFFTLibrary < coder.fftw.StandaloneFFTW3Interface
methods (Static)
function th = getNumThreads
coder.inline('always');
th = int32(coder.const(1));
%% Shahar Sar Shalom
% TODO: Insert number of threads needed
%% Shahar Sar Shalom
end
function updateBuildInfo(buildInfo, ctx)
fftwLocation = 'D:\ClassifierExample\fftw-3.3.5-dll64';
%includePath = fullfile(fftwLocation, 'include');
includePath = fftwLocation;
buildInfo.addIncludePaths(includePath);
%libPath = fullfile(fftwLocation, 'lib');
libPath = fftwLocation;
%Double
libName1 = 'libfftw3-3.lib';
[~, libExt] = ctx.getStdLibInfo();
libName1 = [libName1 libExt];
addLinkObjects(buildInfo, libName1, libPath, 1000, true, true);
%Single
libName2 = 'libfftw3f-3.lib';
[~, libExt] = ctx.getStdLibInfo();
libName2 = [libName2 libExt];
addLinkObjects(buildInfo, libName2, libPath, 1000, true, true);
end
end
end
Here is the compilation script
%% COMPILE THE CODE INTO C++
cfg = coder.config('dll','ecoder',false);
cfg.GenerateReport = true;
cfg.TargetLang = 'C++';
cfg.MATLABSourceComments = true; %isDebug;
cfg.Verbose = true;
cfg.CustomFFTCallback = 'CustomWFFTLibrary';
%------------------------------- Debugging -----------------------------
%---------------------------- Code Generation --------------------------
cfg.GenCodeOnly = false;
% Value: 'C' | 'C++' Default: 'C'
cfg.TargetLang = 'C++';
% Dynamic memory only since 16MB
cfg.DynamicMemoryAllocationThreshold = 16 * 1024 * 1024;
%% COMPILE TO MEX (NOT NEEDED)
% cfg = coder.config('mex');
% cfg.GenerateReport = true;
% cfg.EnableJIT = true;
%% Invoke MATLAB Coder.
codegen("-config", cfg, "Foo", "-nargout", 1);
During compilation I get these compilation erros:
FFTWApi.cpp(37): error C2440: '=': cannot convert from 'void *' to 'float *'
FFTWApi.cpp(82): error C2664: 'void fftwf_execute_dft(const fftwf_plan,fftwf_complex (*),fftwf_complex (*))': cannot convert argument 1 from 'void *' to 'const fftwf_plan'
'D:\git\PointsCloudClassification\DeepLearningMatlab\VoxelClassificationProcess\Classifier\ClassifierExample\codegen\dll\Foo\Foo_rtw.mk' is up to date
### Building 'Foo': nmake -f Foo_rtw.mk all
D:\git\PointsCloudClassification\DeepLearningMatlab\VoxelClassificationProcess\Classifier\ClassifierExample\codegen\dll\Foo>call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\..\..\VC\vcvarsall.bat" AMD64
Microsoft (R) Program Maintenance Utility Version 14.00.24210.0
Copyright (C) Microsoft Corporation. All rights reserved.
cl /TP -c -DCRTAPI1=_cdecl -DCRTAPI2=_cdecl -nologo -GS -D_AMD64_=1 -DWIN64 -D_WIN64 -DWIN32 -D_WIN32 -W4 -D_WINNT -D_WIN32_WINNT=0x0502 -DNTDDI_VERSION=0x05020000 -D_WIN32_IE=0x0600 -DWINVER=0x0502 -D_MT -MT -EHs -D_CRT_SECURE_NO_WARNINGS /Od /Oy- /openmp -DMODEL=Foo -DHAVESTDIO -DUSE_RTMODEL -Fo"Foo_data.obj" "D:\git\PointsCloudClassification\DeepLearningMatlab\VoxelClassificationProcess\Classifier\ClassifierExample\codegen\dll\Foo\Foo_data.cpp"
Foo_data.cpp
cl /TP -c -DCRTAPI1=_cdecl -DCRTAPI2=_cdecl -nologo -GS -D_AMD64_=1 -DWIN64 -D_WIN64 -DWIN32 -D_WIN32 -W4 -D_WINNT -D_WIN32_WINNT=0x0502 -DNTDDI_VERSION=0x05020000 -D_WIN32_IE=0x0600 -DWINVER=0x0502 -D_MT -MT -EHs -D_CRT_SECURE_NO_WARNINGS /Od /Oy- /openmp -DMODEL=Foo -DHAVESTDIO -DUSE_RTMODEL -Fo"Foo_initialize.obj" "D:\git\PointsCloudClassification\DeepLearningMatlab\VoxelClassificationProcess\Classifier\ClassifierExample\codegen\dll\Foo\Foo_initialize.cpp"
Foo_initialize.cpp
cl /TP -c -DCRTAPI1=_cdecl -DCRTAPI2=_cdecl -nologo -GS -D_AMD64_=1 -DWIN64 -D_WIN64 -DWIN32 -D_WIN32 -W4 -D_WINNT -D_WIN32_WINNT=0x0502 -DNTDDI_VERSION=0x05020000 -D_WIN32_IE=0x0600 -DWINVER=0x0502 -D_MT -MT -EHs -D_CRT_SECURE_NO_WARNINGS /Od /Oy- /openmp -DMODEL=Foo -DHAVESTDIO -DUSE_RTMODEL -Fo"Foo_terminate.obj" "D:\git\PointsCloudClassification\DeepLearningMatlab\VoxelClassificationProcess\Classifier\ClassifierExample\codegen\dll\Foo\Foo_terminate.cpp"
Foo_terminate.cpp
cl /TP -c -DCRTAPI1=_cdecl -DCRTAPI2=_cdecl -nologo -GS -D_AMD64_=1 -DWIN64 -D_WIN64 -DWIN32 -D_WIN32 -W4 -D_WINNT -D_WIN32_WINNT=0x0502 -DNTDDI_VERSION=0x05020000 -D_WIN32_IE=0x0600 -DWINVER=0x0502 -D_MT -MT -EHs -D_CRT_SECURE_NO_WARNINGS /Od /Oy- /openmp -DMODEL=Foo -DHAVESTDIO -DUSE_RTMODEL -Fo"Foo.obj" "D:\git\PointsCloudClassification\DeepLearningMatlab\VoxelClassificationProcess\Classifier\ClassifierExample\codegen\dll\Foo\Foo.cpp"
Foo.cpp
cl /TP -c -DCRTAPI1=_cdecl -DCRTAPI2=_cdecl -nologo -GS -D_AMD64_=1 -DWIN64 -D_WIN64 -DWIN32 -D_WIN32 -W4 -D_WINNT -D_WIN32_WINNT=0x0502 -DNTDDI_VERSION=0x05020000 -D_WIN32_IE=0x0600 -DWINVER=0x0502 -D_MT -MT -EHs -D_CRT_SECURE_NO_WARNINGS /Od /Oy- /openmp -DMODEL=Foo -DHAVESTDIO -DUSE_RTMODEL -Fo"magic.obj" "D:\git\PointsCloudClassification\DeepLearningMatlab\VoxelClassificationProcess\Classifier\ClassifierExample\codegen\dll\Foo\magic.cpp"
magic.cpp
cl /TP -c -DCRTAPI1=_cdecl -DCRTAPI2=_cdecl -nologo -GS -D_AMD64_=1 -DWIN64 -D_WIN64 -DWIN32 -D_WIN32 -W4 -D_WINNT -D_WIN32_WINNT=0x0502 -DNTDDI_VERSION=0x05020000 -D_WIN32_IE=0x0600 -DWINVER=0x0502 -D_MT -MT -EHs -D_CRT_SECURE_NO_WARNINGS /Od /Oy- /openmp -DMODEL=Foo -DHAVESTDIO -DUSE_RTMODEL -Fo"mod.obj" "D:\git\PointsCloudClassification\DeepLearningMatlab\VoxelClassificationProcess\Classifier\ClassifierExample\codegen\dll\Foo\mod.cpp"
mod.cpp
cl /TP -c -DCRTAPI1=_cdecl -DCRTAPI2=_cdecl -nologo -GS -D_AMD64_=1 -DWIN64 -D_WIN64 -DWIN32 -D_WIN32 -W4 -D_WINNT -D_WIN32_WINNT=0x0502 -DNTDDI_VERSION=0x05020000 -D_WIN32_IE=0x0600 -DWINVER=0x0502 -D_MT -MT -EHs -D_CRT_SECURE_NO_WARNINGS /Od /Oy- /openmp -DMODEL=Foo -DHAVESTDIO -DUSE_RTMODEL -Fo"repmat.obj" "D:\git\PointsCloudClassification\DeepLearningMatlab\VoxelClassificationProcess\Classifier\ClassifierExample\codegen\dll\Foo\repmat.cpp"
repmat.cpp
cl /TP -c -DCRTAPI1=_cdecl -DCRTAPI2=_cdecl -nologo -GS -D_AMD64_=1 -DWIN64 -D_WIN64 -DWIN32 -D_WIN32 -W4 -D_WINNT -D_WIN32_WINNT=0x0502 -DNTDDI_VERSION=0x05020000 -D_WIN32_IE=0x0600 -DWINVER=0x0502 -D_MT -MT -EHs -D_CRT_SECURE_NO_WARNINGS /Od /Oy- /openmp -DMODEL=Foo -DHAVESTDIO -DUSE_RTMODEL -Fo"fix.obj" "D:\git\PointsCloudClassification\DeepLearningMatlab\VoxelClassificationProcess\Classifier\ClassifierExample\codegen\dll\Foo\fix.cpp"
fix.cpp
cl /TP -c -DCRTAPI1=_cdecl -DCRTAPI2=_cdecl -nologo -GS -D_AMD64_=1 -DWIN64 -D_WIN64 -DWIN32 -D_WIN32 -W4 -D_WINNT -D_WIN32_WINNT=0x0502 -DNTDDI_VERSION=0x05020000 -D_WIN32_IE=0x0600 -DWINVER=0x0502 -D_MT -MT -EHs -D_CRT_SECURE_NO_WARNINGS /Od /Oy- /openmp -DMODEL=Foo -DHAVESTDIO -DUSE_RTMODEL -Fo"fftn.obj" "D:\git\PointsCloudClassification\DeepLearningMatlab\VoxelClassificationProcess\Classifier\ClassifierExample\codegen\dll\Foo\fftn.cpp"
fftn.cpp
cl /TP -c -DCRTAPI1=_cdecl -DCRTAPI2=_cdecl -nologo -GS -D_AMD64_=1 -DWIN64 -D_WIN64 -DWIN32 -D_WIN32 -W4 -D_WINNT -D_WIN32_WINNT=0x0502 -DNTDDI_VERSION=0x05020000 -D_WIN32_IE=0x0600 -DWINVER=0x0502 -D_MT -MT -EHs -D_CRT_SECURE_NO_WARNINGS /Od /Oy- /openmp -DMODEL=Foo -DHAVESTDIO -DUSE_RTMODEL -Fo"fft.obj" "D:\git\PointsCloudClassification\DeepLearningMatlab\VoxelClassificationProcess\Classifier\ClassifierExample\codegen\dll\Foo\fft.cpp"
fft.cpp
cl /TP -c -DCRTAPI1=_cdecl -DCRTAPI2=_cdecl -nologo -GS -D_AMD64_=1 -DWIN64 -D_WIN64 -DWIN32 -D_WIN32 -W4 -D_WINNT -D_WIN32_WINNT=0x0502 -DNTDDI_VERSION=0x05020000 -D_WIN32_IE=0x0600 -DWINVER=0x0502 -D_MT -MT -EHs -D_CRT_SECURE_NO_WARNINGS /Od /Oy- /openmp -DMODEL=Foo -DHAVESTDIO -DUSE_RTMODEL -Fo"fft1.obj" "D:\git\PointsCloudClassification\DeepLearningMatlab\VoxelClassificationProcess\Classifier\ClassifierExample\codegen\dll\Foo\fft1.cpp"
fft1.cpp
cl /TP -c -DCRTAPI1=_cdecl -DCRTAPI2=_cdecl -nologo -GS -D_AMD64_=1 -DWIN64 -D_WIN64 -DWIN32 -D_WIN32 -W4 -D_WINNT -D_WIN32_WINNT=0x0502 -DNTDDI_VERSION=0x05020000 -D_WIN32_IE=0x0600 -DWINVER=0x0502 -D_MT -MT -EHs -D_CRT_SECURE_NO_WARNINGS /Od /Oy- /openmp -DMODEL=Foo -DHAVESTDIO -DUSE_RTMODEL -Fo"FFTWApi.obj" "D:\git\PointsCloudClassification\DeepLearningMatlab\VoxelClassificationProcess\Classifier\ClassifierExample\codegen\dll\Foo\FFTWApi.cpp"
FFTWApi.cpp
D:\git\PointsCloudClassification\DeepLearningMatlab\VoxelClassificationProcess\Classifier\ClassifierExample\codegen\dll\Foo\FFTWApi.cpp(37): error C2440: '=': cannot convert from 'void *' to 'float *'
D:\git\PointsCloudClassification\DeepLearningMatlab\VoxelClassificationProcess\Classifier\ClassifierExample\codegen\dll\Foo\FFTWApi.cpp(37): note: Conversion from 'void*' to pointer to non-'void' requires an explicit cast
D:\git\PointsCloudClassification\DeepLearningMatlab\VoxelClassificationProcess\Classifier\ClassifierExample\codegen\dll\Foo\FFTWApi.cpp(43): error C2440: '=': cannot convert from 'void *' to 'fftwf_complex (*)'
D:\git\PointsCloudClassification\DeepLearningMatlab\VoxelClassificationProcess\Classifier\ClassifierExample\codegen\dll\Foo\FFTWApi.cpp(43): note: Conversion from 'void*' to pointer to non-'void' requires an explicit cast
D:\git\PointsCloudClassification\DeepLearningMatlab\VoxelClassificationProcess\Classifier\ClassifierExample\codegen\dll\Foo\FFTWApi.cpp(44): error C2664: 'void fftwf_execute_dft_r2c(const fftwf_plan,float *,fftwf_complex (*))': cannot convert argument 1 from 'void *' to 'const fftwf_plan'
D:\git\PointsCloudClassification\DeepLearningMatlab\VoxelClassificationProcess\Classifier\ClassifierExample\codegen\dll\Foo\FFTWApi.cpp(44): note: Conversion from 'void*' to pointer to non-'void' requires an explicit cast
D:\git\PointsCloudClassification\DeepLearningMatlab\VoxelClassificationProcess\Classifier\ClassifierExample\codegen\dll\Foo\FFTWApi.cpp(75): error C2440: '=': cannot convert from 'void *' to 'fftwf_complex (*)'
D:\git\PointsCloudClassification\DeepLearningMatlab\VoxelClassificationProcess\Classifier\ClassifierExample\codegen\dll\Foo\FFTWApi.cpp(75): note: Conversion from 'void*' to pointer to non-'void' requires an explicit cast
D:\git\PointsCloudClassification\DeepLearningMatlab\VoxelClassificationProcess\Classifier\ClassifierExample\codegen\dll\Foo\FFTWApi.cpp(81): error C2440: '=': cannot convert from 'void *' to 'fftwf_complex (*)'
D:\git\PointsCloudClassification\DeepLearningMatlab\VoxelClassificationProcess\Classifier\ClassifierExample\codegen\dll\Foo\FFTWApi.cpp(81): note: Conversion from 'void*' to pointer to non-'void' requires an explicit cast
D:\git\PointsCloudClassification\DeepLearningMatlab\VoxelClassificationProcess\Classifier\ClassifierExample\codegen\dll\Foo\FFTWApi.cpp(82): error C2664: 'void fftwf_execute_dft(const fftwf_plan,fftwf_complex (*),fftwf_complex (*))': cannot convert argument 1 from 'void *' to 'const fftwf_plan'
D:\git\PointsCloudClassification\DeepLearningMatlab\VoxelClassificationProcess\Classifier\ClassifierExample\codegen\dll\Foo\FFTWApi.cpp(82): note: Conversion from 'void*' to pointer to non-'void' requires an explicit cast
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\cl.EXE"' : return code '0x2'
Stop.
The make command returned an error of 2
'An_error_occurred_during_the_call_to_make' is not recognized as an internal or external command,
operable program or batch file.
------------------------------------------------------------------------
D:\git\PointsCloudClassification\DeepLearningMatlab\VoxelClassificationProcess\Classifier\ClassifierExample\codegen\dll\Foo>call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\..\..\VC\vcvarsall.bat" AMD64
Microsoft (R) Program Maintenance Utility Version 14.00.24210.0
Copyright (C) Microsoft Corporation. All rights reserved.
cl /TP -c -DCRTAPI1=_cdecl -DCRTAPI2=_cdecl -nologo -GS -D_AMD64_=1 -DWIN64 -D_WIN64 -DWIN32 -D_WIN32 -W4 -D_WINNT -D_WIN32_WINNT=0x0502 -DNTDDI_VERSION=0x05020000 -D_WIN32_IE=0x0600 -DWINVER=0x0502 -D_MT -MT -EHs -D_CRT_SECURE_NO_WARNINGS /Od /Oy- /openmp -DMODEL=Foo -DHAVESTDIO -DUSE_RTMODEL -Fo"Foo_data.obj" "D:\git\PointsCloudClassification\DeepLearningMatlab\VoxelClassificationProcess\Classifier\ClassifierExample\codegen\dll\Foo\Foo_data.cpp"
Foo_data.cpp
cl /TP -c -DCRTAPI1=_cdecl -DCRTAPI2=_cdecl -nologo -GS -D_AMD64_=1 -DWIN64 -D_WIN64 -DWIN32 -D_WIN32 -W4 -D_WINNT -D_WIN32_WINNT=0x0502 -DNTDDI_VERSION=0x05020000 -D_WIN32_IE=0x0600 -DWINVER=0x0502 -D_MT -MT -EHs -D_CRT_SECURE_NO_WARNINGS /Od /Oy- /openmp -DMODEL=Foo -DHAVESTDIO -DUSE_RTMODEL -Fo"Foo_initialize.obj" "D:\git\PointsCloudClassification\DeepLearningMatlab\VoxelClassificationProcess\Classifier\ClassifierExample\codegen\dll\Foo\Foo_initialize.cpp"
Foo_initialize.cpp
cl /TP -c -DCRTAPI1=_cdecl -DCRTAPI2=_cdecl -nologo -GS -D_AMD64_=1 -DWIN64 -D_WIN64 -DWIN32 -D_WIN32 -W4 -D_WINNT -D_WIN32_WINNT=0x0502 -DNTDDI_VERSION=0x05020000 -D_WIN32_IE=0x0600 -DWINVER=0x0502 -D_MT -MT -EHs -D_CRT_SECURE_NO_WARNINGS /Od /Oy- /openmp -DMODEL=Foo -DHAVESTDIO -DUSE_RTMODEL -Fo"Foo_terminate.obj" "D:\git\PointsCloudClassification\DeepLearningMatlab\VoxelClassificationProcess\Classifier\ClassifierExample\codegen\dll\Foo\Foo_terminate.cpp"
Foo_terminate.cpp
cl /TP -c -DCRTAPI1=_cdecl -DCRTAPI2=_cdecl -nologo -GS -D_AMD64_=1 -DWIN64 -D_WIN64 -DWIN32 -D_WIN32 -W4 -D_WINNT -D_WIN32_WINNT=0x0502 -DNTDDI_VERSION=0x05020000 -D_WIN32_IE=0x0600 -DWINVER=0x0502 -D_MT -MT -EHs -D_CRT_SECURE_NO_WARNINGS /Od /Oy- /openmp -DMODEL=Foo -DHAVESTDIO -DUSE_RTMODEL -Fo"Foo.obj" "D:\git\PointsCloudClassification\DeepLearningMatlab\VoxelClassificationProcess\Classifier\ClassifierExample\codegen\dll\Foo\Foo.cpp"
Foo.cpp
cl /TP -c -DCRTAPI1=_cdecl -DCRTAPI2=_cdecl -nologo -GS -D_AMD64_=1 -DWIN64 -D_WIN64 -DWIN32 -D_WIN32 -W4 -D_WINNT -D_WIN32_WINNT=0x0502 -DNTDDI_VERSION=0x05020000 -D_WIN32_IE=0x0600 -DWINVER=0x0502 -D_MT -MT -EHs -D_CRT_SECURE_NO_WARNINGS /Od /Oy- /openmp -DMODEL=Foo -DHAVESTDIO -DUSE_RTMODEL -Fo"magic.obj" "D:\git\PointsCloudClassification\DeepLearningMatlab\VoxelClassificationProcess\Classifier\ClassifierExample\codegen\dll\Foo\magic.cpp"
magic.cpp
cl /TP -c -DCRTAPI1=_cdecl -DCRTAPI2=_cdecl -nologo -GS -D_AMD64_=1 -DWIN64 -D_WIN64 -DWIN32 -D_WIN32 -W4 -D_WINNT -D_WIN32_WINNT=0x0502 -DNTDDI_VERSION=0x05020000 -D_WIN32_IE=0x0600 -DWINVER=0x0502 -D_MT -MT -EHs -D_CRT_SECURE_NO_WARNINGS /Od /Oy- /openmp -DMODEL=Foo -DHAVESTDIO -DUSE_RTMODEL -Fo"mod.obj" "D:\git\PointsCloudClassification\DeepLearningMatlab\VoxelClassificationProcess\Classifier\ClassifierExample\codegen\dll\Foo\mod.cpp"
mod.cpp
cl /TP -c -DCRTAPI1=_cdecl -DCRTAPI2=_cdecl -nologo -GS -D_AMD64_=1 -DWIN64 -D_WIN64 -DWIN32 -D_WIN32 -W4 -D_WINNT -D_WIN32_WINNT=0x0502 -DNTDDI_VERSION=0x05020000 -D_WIN32_IE=0x0600 -DWINVER=0x0502 -D_MT -MT -EHs -D_CRT_SECURE_NO_WARNINGS /Od /Oy- /openmp -DMODEL=Foo -DHAVESTDIO -DUSE_RTMODEL -Fo"repmat.obj" "D:\git\PointsCloudClassification\DeepLearningMatlab\VoxelClassificationProcess\Classifier\ClassifierExample\codegen\dll\Foo\repmat.cpp"
repmat.cpp
cl /TP -c -DCRTAPI1=_cdecl -DCRTAPI2=_cdecl -nologo -GS -D_AMD64_=1 -DWIN64 -D_WIN64 -DWIN32 -D_WIN32 -W4 -D_WINNT -D_WIN32_WINNT=0x0502 -DNTDDI_VERSION=0x05020000 -D_WIN32_IE=0x0600 -DWINVER=0x0502 -D_MT -MT -EHs -D_CRT_SECURE_NO_WARNINGS /Od /Oy- /openmp -DMODEL=Foo -DHAVESTDIO -DUSE_RTMODEL -Fo"fix.obj" "D:\git\PointsCloudClassification\DeepLearningMatlab\VoxelClassificationProcess\Classifier\ClassifierExample\codegen\dll\Foo\fix.cpp"
fix.cpp
cl /TP -c -DCRTAPI1=_cdecl -DCRTAPI2=_cdecl -nologo -GS -D_AMD64_=1 -DWIN64 -D_WIN64 -DWIN32 -D_WIN32 -W4 -D_WINNT -D_WIN32_WINNT=0x0502 -DNTDDI_VERSION=0x05020000 -D_WIN32_IE=0x0600 -DWINVER=0x0502 -D_MT -MT -EHs -D_CRT_SECURE_NO_WARNINGS /Od /Oy- /openmp -DMODEL=Foo -DHAVESTDIO -DUSE_RTMODEL -Fo"fftn.obj" "D:\git\PointsCloudClassification\DeepLearningMatlab\VoxelClassificationProcess\Classifier\ClassifierExample\codegen\dll\Foo\fftn.cpp"
fftn.cpp
cl /TP -c -DCRTAPI1=_cdecl -DCRTAPI2=_cdecl -nologo -GS -D_AMD64_=1 -DWIN64 -D_WIN64 -DWIN32 -D_WIN32 -W4 -D_WINNT -D_WIN32_WINNT=0x0502 -DNTDDI_VERSION=0x05020000 -D_WIN32_IE=0x0600 -DWINVER=0x0502 -D_MT -MT -EHs -D_CRT_SECURE_NO_WARNINGS /Od /Oy- /openmp -DMODEL=Foo -DHAVESTDIO -DUSE_RTMODEL -Fo"fft.obj" "D:\git\PointsCloudClassification\DeepLearningMatlab\VoxelClassificationProcess\Classifier\ClassifierExample\codegen\dll\Foo\fft.cpp"
fft.cpp
cl /TP -c -DCRTAPI1=_cdecl -DCRTAPI2=_cdecl -nologo -GS -D_AMD64_=1 -DWIN64 -D_WIN64 -DWIN32 -D_WIN32 -W4 -D_WINNT -D_WIN32_WINNT=0x0502 -DNTDDI_VERSION=0x05020000 -D_WIN32_IE=0x0600 -DWINVER=0x0502 -D_MT -MT -EHs -D_CRT_SECURE_NO_WARNINGS /Od /Oy- /openmp -DMODEL=Foo -DHAVESTDIO -DUSE_RTMODEL -Fo"fft1.obj" "D:\git\PointsCloudClassification\DeepLearningMatlab\VoxelClassificationProcess\Classifier\ClassifierExample\codegen\dll\Foo\fft1.cpp"
fft1.cpp
cl /TP -c -DCRTAPI1=_cdecl -DCRTAPI2=_cdecl -nologo -GS -D_AMD64_=1 -DWIN64 -D_WIN64 -DWIN32 -D_WIN32 -W4 -D_WINNT -D_WIN32_WINNT=0x0502 -DNTDDI_VERSION=0x05020000 -D_WIN32_IE=0x0600 -DWINVER=0x0502 -D_MT -MT -EHs -D_CRT_SECURE_NO_WARNINGS /Od /Oy- /openmp -DMODEL=Foo -DHAVESTDIO -DUSE_RTMODEL -Fo"FFTWApi.obj" "D:\git\PointsCloudClassification\DeepLearningMatlab\VoxelClassificationProcess\Classifier\ClassifierExample\codegen\dll\Foo\FFTWApi.cpp"
FFTWApi.cpp
D:\git\PointsCloudClassification\DeepLearningMatlab\VoxelClassificationProcess\Classifier\ClassifierExample\codegen\dll\Foo\FFTWApi.cpp(37): error C2440: '=': cannot convert from 'void *' to 'float *'
D:\git\PointsCloudClassification\DeepLearningMatlab\VoxelClassificationProcess\Classifier\ClassifierExample\codegen\dll\Foo\FFTWApi.cpp(37): note: Conversion from 'void*' to pointer to non-'void' requires an explicit cast
D:\git\PointsCloudClassification\DeepLearningMatlab\VoxelClassificationProcess\Classifier\ClassifierExample\codegen\dll\Foo\FFTWApi.cpp(43): error C2440: '=': cannot convert from 'void *' to 'fftwf_complex (*)'
D:\git\PointsCloudClassification\DeepLearningMatlab\VoxelClassificationProcess\Classifier\ClassifierExample\codegen\dll\Foo\FFTWApi.cpp(43): note: Conversion from 'void*' to pointer to non-'void' requires an explicit cast
D:\git\PointsCloudClassification\DeepLearningMatlab\VoxelClassificationProcess\Classifier\ClassifierExample\codegen\dll\Foo\FFTWApi.cpp(44): error C2664: 'void fftwf_execute_dft_r2c(const fftwf_plan,float *,fftwf_complex (*))': cannot convert argument 1 from 'void *' to 'const fftwf_plan'
D:\git\PointsCloudClassification\DeepLearningMatlab\VoxelClassificationProcess\Classifier\ClassifierExample\codegen\dll\Foo\FFTWApi.cpp(44): note: Conversion from 'void*' to pointer to non-'void' requires an explicit cast
D:\git\PointsCloudClassification\DeepLearningMatlab\VoxelClassificationProcess\Classifier\ClassifierExample\codegen\dll\Foo\FFTWApi.cpp(75): error C2440: '=': cannot convert from 'void *' to 'fftwf_complex (*)'
D:\git\PointsCloudClassification\DeepLearningMatlab\VoxelClassificationProcess\Classifier\ClassifierExample\codegen\dll\Foo\FFTWApi.cpp(75): note: Conversion from 'void*' to pointer to non-'void' requires an explicit cast
D:\git\PointsCloudClassification\DeepLearningMatlab\VoxelClassificationProcess\Classifier\ClassifierExample\codegen\dll\Foo\FFTWApi.cpp(81): error C2440: '=': cannot convert from 'void *' to 'fftwf_complex (*)'
D:\git\PointsCloudClassification\DeepLearningMatlab\VoxelClassificationProcess\Classifier\ClassifierExample\codegen\dll\Foo\FFTWApi.cpp(81): note: Conversion from 'void*' to pointer to non-'void' requires an explicit cast
D:\git\PointsCloudClassification\DeepLearningMatlab\VoxelClassificationProcess\Classifier\ClassifierExample\codegen\dll\Foo\FFTWApi.cpp(82): error C2664: 'void fftwf_execute_dft(const fftwf_plan,fftwf_complex (*),fftwf_complex (*))': cannot convert argument 1 from 'void *' to 'const fftwf_plan'
D:\git\PointsCloudClassification\DeepLearningMatlab\VoxelClassificationProcess\Classifier\ClassifierExample\codegen\dll\Foo\FFTWApi.cpp(82): note: Conversion from 'void*' to pointer to non-'void' requires an explicit cast
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\cl.EXE"' : return code '0x2'
Stop.
The make command returned an error of 2
'An_error_occurred_during_the_call_to_make' is not recognized as an internal or external command,
operable program or batch file.
Error(s) encountered while building "Foo":
### Failed to generate all binary outputs.

채택된 답변

Ryan Livingston
Ryan Livingston 2018년 11월 13일
This is a bug in the generated code:
As shown in the bug report, it was fixed for R2017b_update5 and R2018a.
If you are unable to update, then generating C code will work around the issue.
  댓글 수: 2
TripleSSSS
TripleSSSS 2018년 11월 14일
Thank you so much I spent a lot of time trying to solve this :)
Ryan Livingston
Ryan Livingston 2018년 11월 14일
You're welcome! Sorry to hear about the time spent investigating.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Memory Usage에 대해 자세히 알아보기

태그

제품


릴리스

R2017b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by