0

Ubuntu で MATLAB を使用してmex ライブラリをコンパイルしようとしています。-fpermissive でコンパイルしようとしても、次のエラーが発生します (つまりmex -v CXXFLAGS='$CFLAGS -fpermissive' Coarse2FineTwoFrames.cpp GaussianPyramid.cpp OpticalFlow.cpp、どうすればよいですか? ライブラリ コードに問題はありますか?

    In file included from Image.h:11:0,
                     from Coarse2FineTwoFrames.cpp:3:
    Stochastic.h:11:13: warning: extra tokens at end of #ifndef directive [enabled by default]
    In file included from OpticalFlow.h:4:0,
                     from Coarse2FineTwoFrames.cpp:4:
    NoiseModel.h:6:0: warning: "PI" redefined [enabled by default]
    Stochastic.h:16:0: note: this is the location of the previous definition
    In file included from Image.h:6:0,
                     from Coarse2FineTwoFrames.cpp:3:
    ImageProcessing.h: In static member function ‘static void ImageProcessing::BilinearInterpolate(const T1*, int, int, int, double, double, T2*)’:
    ImageProcessing.h:133:23: warning: there are no arguments to ‘__min’ that depend on a template parameter, so a declaration of ‘__min’ must be available [-fpermissive]
    ImageProcessing.h:134:23: warning: there are no arguments to ‘__min’ that depend on a template parameter, so a declaration of ‘__min’ must be available [-fpermissive]
    ImageProcessing.h: In static member function ‘static T1 ImageProcessing::BilinearInterpolate(const T1*, int, int, double, double)’:
    ImageProcessing.h:155:23: warning: there are no arguments to ‘__min’ that depend on a template parameter, so a declaration of ‘__min’ must be available [-fpermissive]
    ImageProcessing.h:156:23: warning: there are no arguments to ‘__min’ that depend on a template parameter, so a declaration of ‘__min’ must be available [-fpermissive]
    ImageProcessing.h: In static member function ‘static void ImageProcessing::BilinearInterpolate_transpose(const T1*, int, int, int, double, double, T2*)’:
    ImageProcessing.h:182:23: warning: there are no arguments to ‘__min’ that depend on a template parameter, so a declaration of ‘__min’ must be available [-fpermissive]
    ImageProcessing.h:183:23: warning: there are no arguments to ‘__min’ that depend on a template parameter, so a declaration of ‘__min’ must be available [-fpermissive]
    In file included from Image.h:11:0,
                     from Coarse2FineTwoFrames.cpp:3:
    Stochastic.h: In static member function ‘static void CStochastic::GaussianFiltering(T1*, T2*, int, int, int, double)’:
    Stochastic.h:402:32: warning: there are no arguments to ‘__min’ that depend on a template parameter, so a declaration of ‘__min’ must be available [-fpermissive]
    In file included from Coarse2FineTwoFrames.cpp:3:0:
    Image.h: In member function ‘virtual bool Image<T>::loadImage(std::ifstream&)’:
    Image.h:846:26: warning: there are no arguments to ‘strcmpi’ that depend on a template parameter, so a declaration of ‘strcmpi’ must be available [-fpermissive]
    Image.h:848:26: warning: there are no arguments to ‘strcmpi’ that depend on a template parameter, so a declaration of ‘strcmpi’ must be available [-fpermissive]
    Image.h:850:34: warning: there are no arguments to ‘strcmpi’ that depend on a template parameter, so a declaration of ‘strcmpi’ must be available [-fpermissive]
    Image.h: In member function ‘void Image<T>::imfilter_hv(Image<T1>&, const Image<double>&, const Image<double>&) const’:
    Image.h:1328:54: warning: there are no arguments to ‘__max’ that depend on a template parameter, so a declaration of ‘__max’ must be available [-fpermissive]
    Image.h:1329:54: warning: there are no arguments to ‘__max’ that depend on a template parameter, so a declaration of ‘__max’ must be available [-fpermissive]
    Image.h: In member function ‘void Image<T>::imfilter_hv_transpose(Image<T1>&, const Image<double>&, const Image<double>&) const’:
    Image.h:1417:54: warning: there are no arguments to ‘__max’ that depend on a template parameter, so a declaration of ‘__max’ must be available [-fpermissive]
    Image.h:1418:54: warning: there are no arguments to ‘__max’ that depend on a template parameter, so a declaration of ‘__max’ must be available [-fpermissive]
    Image.h: In member function ‘void Image<T>::warpImageBicubic(Image<T>&, const Image<T1>&, const Image<T1>&, const Image<T1>&, const Image<T2>&, const Image<T2>&) const’:
    Image.h:2277:25: warning: there are no arguments to ‘__max’ that depend on a template parameter, so a declaration of ‘__max’ must be available [-fpermissive]
    Image.h:2278:25: warning: there are no arguments to ‘__max’ that depend on a template parameter, so a declaration of ‘__max’ must be available [-fpermissive]
    Image.h:2279:25: warning: there are no arguments to ‘__max’ that depend on a template parameter, so a declaration of ‘__max’ must be available [-fpermissive]
    Image.h:2280:25: warning: there are no arguments to ‘__max’ that depend on a template parameter, so a declaration of ‘__max’ must be available [-fpermissive]
    Image.h: In member function ‘void Image<T>::warpImageBicubic(Image<T>&, const Image<T1>&, const Image<T2>&, const Image<T2>&) const’:
    Image.h:2339:25: warning: there are no arguments to ‘__max’ that depend on a template parameter, so a declaration of ‘__max’ must be available [-fpermissive]
    Image.h:2340:25: warning: there are no arguments to ‘__max’ that depend on a template parameter, so a declaration of ‘__max’ must be available [-fpermissive]
    Image.h:2341:25: warning: there are no arguments to ‘__max’ that depend on a template parameter, so a declaration of ‘__max’ must be available [-fpermissive]
    Image.h:2342:25: warning: there are no arguments to ‘__max’ that depend on a template parameter, so a declaration of ‘__max’ must be available [-fpermissive]
    Image.h: In member function ‘void Image<T>::warpImageBicubicCoeff(Image<T1>&) const’:
    Image.h:2439:25: warning: there are no arguments to ‘__max’ that depend on a template parameter, so a declaration of ‘__max’ must be available [-fpermissive]
    Image.h:2440:25: warning: there are no arguments to ‘__max’ that depend on a template parameter, so a declaration of ‘__max’ must be available [-fpermissive]
    Image.h:2441:25: warning: there are no arguments to ‘__max’ that depend on a template parameter, so a declaration of ‘__max’ must be available [-fpermissive]
    Image.h:2442:25: warning: there are no arguments to ‘__max’ that depend on a template parameter, so a declaration of ‘__max’ must be available [-fpermissive]
    Image.h: In member function ‘void Image<T>::warpImageBicubicRef(const Image<T>&, Image<T>&, const Image<T1>&, const Image<T1>&, const Image<T1>&, const Image<T2>&, const Image<T2>&) const’:
    Image.h:2536:25: warning: there are no arguments to ‘__max’ that depend on a template parameter, so a declaration of ‘__max’ must be available [-fpermissive]
    Image.h:2537:25: warning: there are no arguments to ‘__max’ that depend on a template parameter, so a declaration of ‘__max’ must be available [-fpermissive]
    Image.h:2538:25: warning: there are no arguments to ‘__max’ that depend on a template parameter, so a declaration of ‘__max’ must be available [-fpermissive]
    Image.h:2539:25: warning: there are no arguments to ‘__max’ that depend on a template parameter, so a declaration of ‘__max’ must be available [-fpermissive]
    Image.h: In member function ‘void Image<T>::warpImageBicubicRef(const Image<T>&, Image<T>&, const Image<T1>&, const Image<T2>&, const Image<T2>&) const’:
    Image.h:2606:25: warning: there are no arguments to ‘__max’ that depend on a template parameter, so a declaration of ‘__max’ must be available [-fpermissive]
    Image.h:2607:25: warning: there are no arguments to ‘__max’ that depend on a template parameter, so a declaration of ‘__max’ must be available [-fpermissive]
    Image.h:2608:25: warning: there are no arguments to ‘__max’ that depend on a template parameter, so a declaration of ‘__max’ must be available [-fpermissive]
    Image.h:2609:25: warning: there are no arguments to ‘__max’ that depend on a template parameter, so a declaration of ‘__max’ must be available [-fpermissive]
    Image.h: In member function ‘bool Image<T>::loadImage(std::ifstream&) [with T = double, std::ifstream = std::basic_ifstream<char>]’:
    Coarse2FineTwoFrames.cpp:102:1:   instantiated from here
    Image.h:846:2: error: ‘strcmpi’ was not declared in this scope
    Image.h:848:2: error: ‘strcmpi’ was not declared in this scope
    Image.h:850:2: error: ‘strcmpi’ was not declared in this scope
    In file included from Image.h:6:0,
                     from Coarse2FineTwoFrames.cpp:3:
    ImageProcessing.h: In static member function ‘static void ImageProcessing::BilinearInterpolate(const T1*, int, int, int, double, double, T2*) [with T1 = double, T2 = double]’:
    ImageProcessing.h:218:4:   instantiated from ‘static void ImageProcessing::ResizeImage(const T1*, T2*, int, int, int, double) [with T1 = double, T2 = double]’
    Image.h:719:2:   instantiated from ‘bool Image<T>::imresize(double) [with T = double]’
    Coarse2FineTwoFrames.cpp:102:1:   instantiated from here
    ImageProcessing.h:133:2: error: ‘__min’ was not declared in this scope
    ImageProcessing.h:133:2: error: ‘__max’ was not declared in this scope
    In file included from Image.h:6:0,
                     from Coarse2FineTwoFrames.cpp:3:
    ImageProcessing.h: In static member function ‘static T ImageProcessing::EnforceRange(const T&, const int&) [with T = int]’:
    ImageProcessing.h:139:4:   instantiated from ‘static void ImageProcessing::BilinearInterpolate(const T1*, int, int, int, double, double, T2*) [with T1 = double, T2 = double]’
    ImageProcessing.h:218:4:   instantiated from ‘static void ImageProcessing::ResizeImage(const T1*, T2*, int, int, int, double) [with T1 = double, T2 = double]’
    Image.h:719:2:   instantiated from ‘bool Image<T>::imresize(double) [with T = double]’
    Coarse2FineTwoFrames.cpp:102:1:   instantiated from here
    ImageProcessing.h:23:98: error: ‘__max’ was not declared in this scope
    ImageProcessing.h:23:98: error: ‘__min’ was not declared in this scope

        mex: compile of ' "Coarse2FineTwoFrames.cpp"' failed.
4

3 に答える 3

2

matlab 用の OpticalFlow パッケージをビルドしようとしているようです。同じエラーが発生し、project.h でコンパイル フラグ _LINUX_MAC を設定して解決しました。別のコンパイル エラーは、"math.h" の代わりに使用することで解決されました。

乾杯、

エイタン

于 2013-01-04T09:35:18.330 に答える
1

エラーメッセージによると。strcmpi定義されていません。

非常に簡単なグーグル検索から、それがで定義されていることがわかりますstring.h

#include <string.h>そのため、 の先頭に追加してみてくださいimage.h

于 2012-09-29T21:45:25.147 に答える
1

abs エラーについては、OpticalFlow.cpp で「#include <cmath>」を使用します

于 2014-06-23T10:30:56.343 に答える