Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Building with WSL does not work #868

Open
jerylteo opened this issue Sep 17, 2024 · 6 comments
Open

Building with WSL does not work #868

jerylteo opened this issue Sep 17, 2024 · 6 comments

Comments

@jerylteo
Copy link

Running WSL on Windows 11, on BehaviorTree.CPP v4.6.2.

Continuation from #867

Commands to build works without errors, but folder does not reflect built files.
i.e. No difference made after running: cmake --build . --parallel

After running:
...
[ 99%] Built target t12_default_ports
[ 99%] Built target t06_subtree_port_remapping
[100%] Linking CXX executable t11_groot_howto
[100%] Linking CXX executable ex03_sqlite_log
[100%] Built target t11_groot_howto
[100%] Built target ex03_sqlite_log
[100%] Linking CXX executable behaviortree_cpp_test
[100%] Built target behaviortree_cpp_test

But build folder does not contain any lib or dll etc.
image

Did something go wrong? Running with administrative privileges did not make a difference.

@jerylteo
Copy link
Author

Installing with Pixi works but program crashes because "libzmq-mt-4_3_5.dll was not found".

I've literally tried all ways I can think of to build this.

  • Windows (sqlite3.h not found)
  • WSL (build doesn't work)
  • Pixi (libzmq-mt-4_3_5.dll was not found)
  • Tried v4.5.x and v3.8, both does not work either.

Would appreciate some help.

@jerylteo
Copy link
Author

jerylteo commented Sep 18, 2024

Building with OSX replicates the issue.

I think the build works, but there could be some configuration that does not build a dll/lib for non-Windows OS. Unfortunately, I need to add this to a Windows VS Project, so I do need to be able to link the library over.

Looks like I've made one full circle and need to build in Windows, but that doesn't work. #867

@jerylteo
Copy link
Author

Building it directly with VS fails to build the library with zmq and sqlite3 errors:

2>------ Build started: Project: behaviortree_cpp, Configuration: Debug x64 ------
2>Auto build dll exports
2> Creating library C:/Users/jeryl/Documents/GitHub/build2/Debug/behaviortree_cppd.lib and object C:/Users/jeryl/Documents/GitHub/build2/Debug/behaviortree_cppd.exp
2>groot2_publisher.obj : error LNK2019: unresolved external symbol __imp_zmq_errno referenced in function "public: __cdecl zmq::error_t::error_t(void)" (??0error_t@zmq@@qeaa@XZ)
2>groot2_publisher.obj : error LNK2019: unresolved external symbol __imp_zmq_strerror referenced in function "public: virtual char const * __cdecl zmq::error_t::what(void)const " (?what@error_t@zmq@@UEBAPEBDXZ)
2>groot2_publisher.obj : error LNK2019: unresolved external symbol __imp_zmq_ctx_new referenced in function "public: __cdecl zmq::context_t::context_t(void)" (??0context_t@zmq@@qeaa@XZ)
2>groot2_publisher.obj : error LNK2019: unresolved external symbol __imp_zmq_ctx_term referenced in function "public: void __cdecl zmq::context_t::close(void)" (?close@context_t@zmq@@QEAAXXZ)
2>groot2_publisher.obj : error LNK2019: unresolved external symbol __imp_zmq_msg_init referenced in function "public: __cdecl zmq::message_t::message_t(class zmq::message_t &&)" (??0message_t@zmq@@qeaa@$$QEAV01@@z)
2>groot2_publisher.obj : error LNK2019: unresolved external symbol __imp_zmq_msg_init_size referenced in function "public: __cdecl zmq::message_t::message_t(void const *,unsigned __int64)" (??0message_t@zmq@@qeaa@PEBX_K@Z)
2>groot2_publisher.obj : error LNK2019: unresolved external symbol __imp_zmq_msg_send referenced in function "public: class std::optional __cdecl zmq::detail::socket_base::send(class zmq::message_t &,enum zmq::send_flags)" (?send@socket_base@detail@zmq@@qeaa?AV?$optional@_K@std@@AEAVmessage_t@3@W4send_flags@3@@z)
2>groot2_publisher.obj : error LNK2019: unresolved external symbol __imp_zmq_msg_recv referenced in function "public: class std::optional __cdecl zmq::detail::socket_base::recv(class zmq::message_t &,enum zmq::recv_flags)" (?recv@socket_base@detail@zmq@@qeaa?AV?$optional@_K@std@@AEAVmessage_t@3@W4recv_flags@3@@z)
2>groot2_publisher.obj : error LNK2019: unresolved external symbol __imp_zmq_msg_close referenced in function "public: __cdecl zmq::message_t::~message_t(void)" (??1message_t@zmq@@qeaa@XZ)
2>groot2_publisher.obj : error LNK2019: unresolved external symbol __imp_zmq_msg_data referenced in function "public: void * __cdecl zmq::message_t::data(void)" (?data@message_t@zmq@@QEAAPEAXXZ)
2>groot2_publisher.obj : error LNK2019: unresolved external symbol __imp_zmq_msg_size referenced in function "public: unsigned __int64 __cdecl zmq::message_t::size(void)const " (?size@message_t@zmq@@QEBA_KXZ)
2>groot2_publisher.obj : error LNK2019: unresolved external symbol __imp_zmq_msg_more referenced in function "public: bool __cdecl zmq::message_t::more(void)const " (?more@message_t@zmq@@QEBA_NXZ)
2>groot2_publisher.obj : error LNK2019: unresolved external symbol __imp_zmq_socket referenced in function "public: __cdecl zmq::socket_t::socket_t(class zmq::context_t &,int)" (??0socket_t@zmq@@qeaa@AEAVcontext_t@1@H@Z)
2>groot2_publisher.obj : error LNK2019: unresolved external symbol __imp_zmq_close referenced in function "public: void __cdecl zmq::socket_t::close(void)" (?close@socket_t@zmq@@QEAAXXZ)
2>groot2_publisher.obj : error LNK2019: unresolved external symbol __imp_zmq_setsockopt referenced in function "private: void __cdecl zmq::detail::socket_base::set_option(int,void const *,unsigned __int64)" (?set_option@socket_base@detail@zmq@@AEAAXHPEBX_K@Z)
2>groot2_publisher.obj : error LNK2019: unresolved external symbol __imp_zmq_bind referenced in function "public: void __cdecl zmq::detail::socket_base::bind(char const *)" (?bind@socket_base@detail@zmq@@QEAAXPEBD@Z)
2>bt_sqlite_logger.obj : error LNK2019: unresolved external symbol sqlite3_close referenced in function "public: bool __cdecl sqlite::Connection::Close(void)" (?Close@Connection@sqlite@@QEAA_NXZ)
2>bt_sqlite_logger.obj : error LNK2019: unresolved external symbol sqlite3_open referenced in function "public: bool __cdecl sqlite::Connection::Open(class std::basic_string<char,struct std::char_traits,class std::allocator > const &)" (?Open@Connection@sqlite@@QEAA_NAEBV?$basic_string@DU?$char_traits@D@std@@v?$allocator@D@2@@std@@@z)
2>bt_sqlite_logger.obj : error LNK2019: unresolved external symbol sqlite3_extended_errcode referenced in function "bool __cdecl sqlite::Priv::CheckError(struct sqlite3 *,int)" (?CheckError@Priv@sqlite@@YA_NPEAUsqlite3@@h@Z)
2>bt_sqlite_logger.obj : error LNK2019: unresolved external symbol sqlite3_errmsg referenced in function "bool __cdecl sqlite::Priv::CheckError(struct sqlite3 *,int)" (?CheckError@Priv@sqlite@@YA_NPEAUsqlite3@@h@Z)
2>bt_sqlite_logger.obj : error LNK2019: unresolved external symbol sqlite3_errstr referenced in function "bool __cdecl sqlite::Priv::CheckError(int)" (?CheckError@Priv@sqlite@@YA_NH@Z)
2>bt_sqlite_logger.obj : error LNK2019: unresolved external symbol sqlite3_prepare_v2 referenced in function "public: __cdecl sqlite::Priv::Statement::Statement(class sqlite::Connection &,class std::basic_string<char,struct std::char_traits,class std::allocator > const &)" (??0Statement@Priv@sqlite@@qeaa@AEAVConnection@2@AEBV?$basic_string@DU?$char_traits@D@std@@v?$allocator@D@2@@std@@@z)
2>bt_sqlite_logger.obj : error LNK2019: unresolved external symbol sqlite3_bind_int referenced in function "void __cdecl sqlite::Priv::Append(struct sqlite3_stmt *,int,int const &)" (?Append@Priv@sqlite@@YAXPEAUsqlite3_stmt@@HAEBH@Z)
2>bt_sqlite_logger.obj : error LNK2019: unresolved external symbol sqlite3_bind_int64 referenced in function "void __cdecl sqlite::Priv::Append(struct sqlite3_stmt *,int,__int64 const &)" (?Append@Priv@sqlite@@YAXPEAUsqlite3_stmt@@HAEB_J@Z)
2>bt_sqlite_logger.obj : error LNK2019: unresolved external symbol sqlite3_bind_text referenced in function "void __cdecl sqlite::Priv::Append(struct sqlite3_stmt *,int,class std::basic_string<char,struct std::char_traits,class std::allocator > const &)" (?Append@Priv@sqlite@@YAXPEAUsqlite3_stmt@@HAEBV?$basic_string@DU?$char_traits@D@std@@v?$allocator@D@2@@std@@@z)
2>bt_sqlite_logger.obj : error LNK2019: unresolved external symbol sqlite3_step referenced in function "public: bool __cdecl sqlite::Priv::Statement::Advance(void)const " (?Advance@Statement@Priv@sqlite@@QEBA_NXZ)
2>bt_sqlite_logger.obj : error LNK2019: unresolved external symbol sqlite3_column_int referenced in function "public: int __cdecl sqlite::Priv::Statement::Get(int)const " (??$Get@H@Statement@Priv@sqlite@@QEBAHH@Z)
2>bt_sqlite_logger.obj : error LNK2019: unresolved external symbol sqlite3_finalize referenced in function "public: __cdecl sqlite::Priv::Statement::~Statement(void)" (??1Statement@Priv@sqlite@@qeaa@XZ)
2>bt_sqlite_logger.obj : error LNK2019: unresolved external symbol sqlite3_reset referenced in function "public: bool __cdecl sqlite::Priv::Statement::Reset(void)const " (?Reset@Statement@Priv@sqlite@@QEBA_NXZ)
2>bt_sqlite_logger.obj : error LNK2019: unresolved external symbol sqlite3_db_cacheflush referenced in function "public: virtual void __cdecl BT::SqliteLogger::flush(void)" (?flush@SqliteLogger@BT@@UEAAXXZ)
2>C:\Users\jeryl\Documents\GitHub\build2\Debug\behaviortree_cppd.dll : fatal error LNK1120: 30 unresolved externals
2>Done building project "behaviortree_cpp.vcxproj" -- FAILED.

@jerylteo
Copy link
Author

Removing ZMQ and SQLite3 from CMakeList allows the library to build properly.

However, when running a sample program on Debug mode, I get a Read Access Violation error from behaviortree_cppd.dll. Release mode works, but I need to be able to run in Debug mode. This error should be another topic. #869

@tony-p
Copy link
Contributor

tony-p commented Oct 8, 2024

Are you building with ROS2 by any chance? if so I have been adding https://github.com/tony-p/BehaviorTree.CPP/blob/e923c1fc412e2775cf1b5dbeae77cf7fd78525f0/cmake/ament_build.cmake#L7 for the pixi build to work.

Can't remember exactly why I haven't upstreamed it, either it broke the regular build or I thought it was just too hacky

On WSL/Linux with pixi/robostack I ended up manually linking the libraries RoboStack/ros-humble#119

Not sure if this actually still an issue with behaviortree.CPP ZMQ as I believe the libraries are now linked as Public, but definitely had to do that in the past

@tony-p
Copy link
Contributor

tony-p commented Oct 8, 2024

when you run with pixi, are you running it within the pixi environement?

pixi is built for a flavour of a conda virtual environment, so to run you should either use pixi shell to enter the pixi environment, or prefix your execution command with pixi run https://pixi.sh

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants