我在Windows中使用Matlab(2018a)困扰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文件吗?
答案 0 :(得分:0)
似乎与我包含/引用BLAS的方式有关。我以前在config.hpp中没有注释“ #define ARMA_USE_BLAS”行。通过此mex命令,将其注释为I:
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:或'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)'
答案 1 :(得分:0)
并通过更改行
如果(size(X)!= size(Y))
到
if(X.size()!= Y.size())
在armaMex_demo.cpp中
混合(和mex调用)可在Windows中从Matlab运行。