簡體   English   中英

無法在 Mac 上鏈接 mat.h 文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM