【问题标题】:Matlab mex command for building armaMex_demo.cpp in Armadillo in Windows用于在 Windows 中的犰狳中构建 armaMex_demo.cpp 的 Matlab mex 命令
【发布时间】:2018-07-19 20:51:50
【问题描述】:

我在使用 Matlab (2018a) 在 Windows 中的 Armadillo (armadillo-8.500.1) 中混合 armaMex_demo_cpp 时遇到问题。

到目前为止,我正在尝试命令:

>> mex -LC:\Users\Test\Documents\Armadillo\armadillo-8.500.1-mod_for_windows\include\armadillo -LC:\mingw-w64\i686-8.1.0-posix-dwarf-rt_v6-rev0\mingw32\bin\gfortran -IC:\Users\Test\Documents\Armadillo\armadillo-8.500.1-mod_for_windows\include armaMex_demo.cpp

并获取错误消息(截断):

Building with 'Microsoft Visual C++ 2017'.
Error using mex
armaMex_demo.cpp
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\random(31): error C4430: missing type specifier - int
assumed. Note: C++ does not support default-int
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\random(31): error C2146: syntax error: missing ';' before
identifier 'ARMA_USE_BLAS'
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\random(31): error C2143: syntax error: missing ';' before
'{'
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\random(31): error C2447: '{': missing function header
(old-style formal list?)
c:\users\test\documents\armadillo\armadillo-8.500.1-mod_for_windows\include\armadillo_bits/arma_rng_cxx11.hpp(28): error C2039: 'mt19937_64': is not a
member of 'std'
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\atomic(42): note: see declaration of 'std'
c:\users\test\documents\armadillo\armadillo-8.500.1-mod_for_windows\include\armadillo_bits/arma_rng_cxx11.hpp(28): error C3083: 'mt19937_64': the symbol
to the left of a '::' must be a type
c:\users\test\documents\armadillo\armadillo-8.500.1-mod_for_windows\include\armadillo_bits/arma_rng_cxx11.hpp(28): error C2039: 'result_type': is not a
member of 'std'
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\atomic(42): note: see declaration of 'std'
c:\users\test\documents\armadillo\armadillo-8.500.1-mod_for_windows\include\armadillo_bits/arma_rng_cxx11.hpp(28): error C3646: 'seed_type': unknown
override specifier

有人知道我在这里可能做错了什么吗?

有人有一个可以在 Windows 中为 armaMex_demo.cpp 构建 mex 文件的工作 mex 命令吗?

【问题讨论】:

    标签: windows visual-studio-2017 mex armadillo


    【解决方案1】:

    似乎与我如何包含/引用 BLAS 有关。我曾经在 config.hpp 中取消注释“#define ARMA_USE_BLAS”行。通过留下评论,我用这个 mex 命令:

    mex -LC:\Users\Test\Documents\Armadillo\armadillo-8.500.1-mod_for_windows\include\armadillo -LC:\mingw-w64\i686-8.1.0-posix-dwarf-rt_v6-rev0\mingw32 \bin\gfortran -IC:\Users\Test\Documents\Armadillo\armadillo-8.500.1-mod_for_windows\include armaMex_demo.cpp

    我只得到这个错误:

    使用“Microsoft Visual C++ 2017”构建。

    使用 mex 时出错 armaMex_demo.cpp C:\Users\Test\Documents\Armadillo\armadillo-8.500.1-mod_for_windows\mex_interface\armaMex_demo.cpp(44): 错误 C2668: 'arma::size': 模糊调用 重载函数

    c:\users\test\documents\armadillo\armadillo-8.500.1-mod_for_windows\include\armadillo_bits/fn_size.hpp(38):注意:可能是 'const

    arma::SizeMat arma::size(const T1 &)' 和 [ T1=arma::mat ]

    C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.14.26428\include\xutility(1654): note: or 'arma::uword std::size(const _Container &)' 和 [ _Container=arma::mat ] C:\Users\Test\Documents\Armadillo\armadillo-8.500.1-mod_for_windows\mex_interface\armaMex_demo.cpp(44):注意:在尝试匹配参数列表时 '(arma::mat)'

    【讨论】:

      【解决方案2】:

      通过换行

      如果(大小(X)!=大小(Y))

      如果 ( X.size() != Y.size() )

      在 armaMex_demo.cpp 中

      mexing(和 mex 调用)在 Matlab 的 Windows 中工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多