rust-cross / cargo-zigbuild

Compile Cargo project with zig as linker
MIT License
1.35k stars 50 forks source link

zig cc with undefined symbols when building opencv-rs #248

Closed DennisZhangOiler closed 2 months ago

DennisZhangOiler commented 2 months ago
  = note: ld.lld: error: undefined symbol: cv::imwrite(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, cv::_InputArray const&, std::__1::vector<int, std::__1::allocator<int>> const&)
          >>> referenced by imgcodecs.cpp:85 (/target/aarch64-unknown-linux-gnu/debug/build/opencv-bb13004260793875/out/imgcodecs.cpp:85)
          >>>               0de9285bc4b8b0c1-imgcodecs.o:(cv_imwrite_const_StringR_const__InputArrayR_const_vectorLintGR) in archive /target/aarch64-unknown-linux-gnu/debug/deps/libopencv-761bbc32057b17de.rlib

          ld.lld: error: undefined symbol: cv::format(char const*, ...)
          >>> referenced by dnn.inl.hpp:297 (/opencv/platforms/linux/build/install/include/opencv4/opencv2/dnn/dnn.inl.hpp:297)
          >>>               0de9285bc4b8b0c1-dnn.o:(cv::dnn::dnn4_v20190621::DictValue::size() const) in archive /target/aarch64-unknown-linux-gnu/debug/deps/libopencv-761bbc32057b17de.rlib

          ld.lld: error: undefined symbol: cv::error(int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, char const*, char const*, int)
          >>> referenced by dnn.inl.hpp:297 (/opencv/platforms/linux/build/install/include/opencv4/opencv2/dnn/dnn.inl.hpp:297)
          >>>               0de9285bc4b8b0c1-dnn.o:(cv::dnn::dnn4_v20190621::DictValue::size() const) in archive /target/aarch64-unknown-linux-gnu/debug/deps/libopencv-761bbc32057b17de.rlib
          >>> referenced by mat.inl.hpp:548 (/opencv/platforms/linux/build/install/include/opencv4/opencv2/core/mat.inl.hpp:548)
          >>>               0de9285bc4b8b0c1-core.o:(cv::Mat::Mat(int, int, int, void*, unsigned long)) in archive /target/aarch64-unknown-linux-gnu/debug/deps/libopencv-761bbc32057b17de.rlib
          >>> referenced by mat.inl.hpp:558 (/opencv/platforms/linux/build/install/include/opencv4/opencv2/core/mat.inl.hpp:558)
          >>>               0de9285bc4b8b0c1-core.o:(cv::Mat::Mat(int, int, int, void*, unsigned long)) in archive /target/aarch64-unknown-linux-gnu/debug/deps/libopencv-761bbc32057b17de.rlib
          >>> referenced 7 more times

And I found a post on stack overflow that may leads to this issue, how can I set those parameters when using cargo zigbuild?

DennisZhangOiler commented 2 months ago

https://github.com/ziglang/zig/wiki/Troubleshooting-Build-Issues#dual-abi-linking

messense commented 2 months ago

Out of scope for this project for now.