2
我想製作一個跨平臺的函數,如果在MATLAB下編譯,那麼它具有額外的功能。 有沒有可以給我提供這些信息的定義?檢查是否用MATLAB編譯mex
換句話說,如下我實現它:
void f(void) {
if (x) {
(...)
}
#ifdef MATLAB
do_other_stuff();
#endif
}
,我需要有一些更換
#ifdef MATLAB
,以確認它正處於MATLAB編譯爲MEX功能。
我的 '>> MEX -v' 輸出這樣的:
'>> mex -v
-> mexopts.sh sourced from directory (DIR = $HOME/.matlab/$REL_VERSION)
FILE = /home/bmmo/.matlab/R2009b/mexopts.sh
----------------------------------------------------------------
-> MATLAB = /usr/matlab2009b
-> CC = gcc
-> CC flags:
CFLAGS = -ansi -D_GNU_SOURCE -fexceptions -fPIC -fno-omit-frame-pointer -pthread
CDEBUGFLAGS = -g
COPTIMFLAGS = -O -DNDEBUG
CLIBS = -Wl,-rpath-link,/usr/matlab2009b/bin/glnxa64 -L/usr/matlab2009b/bin/glnxa64 -lmx -lmex -lmat -lm -lstdc++
arguments = -DMX_COMPAT_32
-> CXX = g++
-> CXX flags:
CXXFLAGS = -ansi -D_GNU_SOURCE -fPIC -fno-omit-frame-pointer -pthread
CXXDEBUGFLAGS = -g
CXXOPTIMFLAGS = -O -DNDEBUG
CXXLIBS = -Wl,-rpath-link,/usr/matlab2009b/bin/glnxa64 -L/usr/matlab2009b/bin/glnxa64 -lmx -lmex -lmat -lm
arguments = -DMX_COMPAT_32
-> FC = g95
-> FC flags:
FFLAGS = -fexceptions -fPIC -fno-omit-frame-pointer
FDEBUGFLAGS = -g
FOPTIMFLAGS = -O
FLIBS = -Wl,-rpath-link,/usr/matlab2009b/bin/glnxa64 -L/usr/matlab2009b/bin/glnxa64 -lmx -lmex -lmat -lm
arguments = -DMX_COMPAT_32
-> LD = gcc
-> Link flags:
LDFLAGS = -pthread -shared -Wl,--version-script,/usr/matlab2009b/extern/lib/glnxa64/mexFunction.map -Wl,--no-undefined
LDDEBUGFLAGS = -g
LDOPTIMFLAGS = -O
LDEXTENSION = .mexa64
arguments =
-> LDCXX =
-> Link flags:
LDCXXFLAGS =
LDCXXDEBUGFLAGS =
LDCXXOPTIMFLAGS =
LDCXXEXTENSION =
arguments =
----------------------------------------------------------------
在此先感謝。
這是我在編譯我正在用多個可能的編譯器開發的庫時使用的。 +1。 – rayryeng
那麼,在我的情況下,定義不存在。我在Linux 64位,Matlab R2009b。但我已經看到了你的解決方案,顯然它適用於其他人 – manatttta
@manatttta你是否已經通過運行'>> mex -setup'配置了你的mex編譯器?你可以發佈運行'>> mex -v'的輸出嗎? – Shai