[英]Unable to link mat.h file on Mac
我在將 mat.h 文件從 Matlab 鏈接到我的 c++ 文件時遇到問題。
我在 Makefile 中包含 .h 文件目錄的部分在這里:
set(MAT_ROOTDIR "/Applications/MATLAB_R2021a.app/extern/include")
target_include_directories(onnxruntime_test PRIVATE ${MAT_ROOTDIR})
我只是在我的 cpp 文件中 #include <mat.h> ,但我收到了這個錯誤:
Undefined symbols for architecture x86_64:
"_matClose_800", referenced from:
matread(char const*, std::__1::vector<double, std::__1::allocator<double> >&) in model_explorer.cpp.o
"_matGetVariable_800", referenced from:
matread(char const*, std::__1::vector<double, std::__1::allocator<double> >&) in model_explorer.cpp.o
"_matOpen_800", referenced from:
matread(char const*, std::__1::vector<double, std::__1::allocator<double> >&) in model_explorer.cpp.o
"_mxDestroyArray_800", referenced from:
matread(char const*, std::__1::vector<double, std::__1::allocator<double> >&) in model_explorer.cpp.o
"_mxGetNumberOfElements_800", referenced from:
matread(char const*, std::__1::vector<double, std::__1::allocator<double> >&) in model_explorer.cpp.o
"_mxGetPr_800", referenced from:
matread(char const*, std::__1::vector<double, std::__1::allocator<double> >&) in model_explorer.cpp.o
"_mxIsDouble_800", referenced from:
matread(char const*, std::__1::vector<double, std::__1::allocator<double> >&) in model_explorer.cpp.o
"_mxIsEmpty_800", referenced from:
matread(char const*, std::__1::vector<double, std::__1::allocator<double> >&) in model_explorer.cpp.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我很確定它正在找到正確的.h 文件,但我不確定為什么我仍然得到未定義的符號。 我還應該鏈接另一件事嗎? 任何幫助將不勝感激!
我正在使用 Mac OS。
我想你不知道什么.h 文件是。
鏈接時您可能需要一個 -l 參數,以便鏈接庫。
您遇到的錯誤不是由於找不到包含文件。 它們是由於查找編譯代碼時出錯——可能在庫中。
你可以像這樣模擬自己:
void foo();
int main(int, char **) {
foo();
}
編譯它,你會得到與你列出的錯誤類似的錯誤——因為我們在任何地方都沒有foo()
的代碼,而且我們也沒有鏈接到有它的庫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.