From 8cd79df9aab01f8e8f974129a8c563ad39d1fe7d Mon Sep 17 00:00:00 2001 From: Matt Date: Thu, 19 Sep 2024 18:59:20 -0700 Subject: [PATCH] Fix windows builds --- photon-lib/build.gradle | 11 ++-- photon-lib/py/photonlibpy/__init__.py | 2 + photon-lib/py/photonlibpy/_photonlibpy.pyd | Bin 52736 -> 111616 bytes .../pybindings/cpp/photonlib_nanobind.cpp | 58 +++++++++--------- 4 files changed, 38 insertions(+), 33 deletions(-) diff --git a/photon-lib/build.gradle b/photon-lib/build.gradle index daeede3a1..8faa75135 100644 --- a/photon-lib/build.gradle +++ b/photon-lib/build.gradle @@ -108,10 +108,10 @@ model { } binaries.all { - // lib project: ':photon-targeting', library: 'photontargeting', linkage: 'shared' - // lib library: nativeName + lib project: ':photon-targeting', library: 'photontargeting', linkage: 'shared' + lib library: nativeName - // nativeUtils.useRequiredLibrary(it, "wpilib_shared") + nativeUtils.useRequiredLibrary(it, "wpilib_shared") } } } @@ -255,7 +255,10 @@ task installPhotonlibpyNative(type: Copy) { into("$projectDir/py/photonlibpy") from "$projectDir/build/libs/photonlib/shared/$jniPlatform/release/libphotonlib.so" + from "$projectDir/build/libs/photonlib/shared/$jniPlatform/release/photonlib.dll" + for (lib in [ + "photontargeting.dll", "cameraserver.dll", "cscore.dll", "opencv_core480.dll", @@ -264,7 +267,7 @@ task installPhotonlibpyNative(type: Copy) { "opencv_imgcodecs480.dll", "opencv_flann480.dll", "opencv_imgproc480.dll", - "photontargeting.so", + "libcameraserver.so", "libcscore.so", "libopencv_core.so.4.8", diff --git a/photon-lib/py/photonlibpy/__init__.py b/photon-lib/py/photonlibpy/__init__.py index 4dc185e42..417f6f4df 100644 --- a/photon-lib/py/photonlibpy/__init__.py +++ b/photon-lib/py/photonlibpy/__init__.py @@ -31,4 +31,6 @@ import robotpy_apriltag # and now our extension module +import os +os.add_dll_directory(os.path.dirname(os.path.realpath(__file__))) from ._photonlibpy import * diff --git a/photon-lib/py/photonlibpy/_photonlibpy.pyd b/photon-lib/py/photonlibpy/_photonlibpy.pyd index c0d994ce83f764409e7ca72fca466252913bd4e0..77cf8e3034cf580ad9fbbb182b1e369b60ba932f 100644 GIT binary patch literal 111616 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 DwRPe4 diff --git a/photon-lib/src/main/pybindings/cpp/photonlib_nanobind.cpp b/photon-lib/src/main/pybindings/cpp/photonlib_nanobind.cpp index 6ebcb6967..21b26ab80 100644 --- a/photon-lib/src/main/pybindings/cpp/photonlib_nanobind.cpp +++ b/photon-lib/src/main/pybindings/cpp/photonlib_nanobind.cpp @@ -22,8 +22,8 @@ * SOFTWARE. */ -// #include -// #include "photon/PhotonCamera.h" +#include +#include "photon/PhotonCamera.h" // actual nanobind include #include @@ -36,34 +36,34 @@ NB_MODULE(_photonlibpy, m) { m.doc() = "C++ bindings for photonlib"; -// nb::class_(m, "PhotonPipelineMetadata") -// .def_ro("sequenceID", &photon::PhotonPipelineMetadata::sequenceID) -// .def_ro("captureTimestampMicros", -// &photon::PhotonPipelineMetadata::captureTimestampMicros) -// .def_ro("publishTimestampMicros", -// &photon::PhotonPipelineMetadata::publishTimestampMicros); + nb::class_(m, "PhotonPipelineMetadata") + .def_ro("sequenceID", &photon::PhotonPipelineMetadata::sequenceID) + .def_ro("captureTimestampMicros", + &photon::PhotonPipelineMetadata::captureTimestampMicros) + .def_ro("publishTimestampMicros", + &photon::PhotonPipelineMetadata::publishTimestampMicros); -// nb::class_(m, "PhotonTrackedTarget") -// .def_ro("yaw", &photon::PhotonTrackedTarget::yaw) -// .def_ro("pitch", &photon::PhotonTrackedTarget::pitch) -// // String representation -// .def("__repr__", [](const photon::PhotonTrackedTarget& t) { -// std::string s; -// fmt::format_to(std::back_inserter(s), -// "PhotonTrackedTarget", t.yaw, t.pitch); -// return s; -// }); -// nb::class_(m, "MultiTargetPNPResult") -// .def_ro("fiducialIDsUsed", &photon::MultiTargetPNPResult::fiducialIDsUsed) -// ; + nb::class_(m, "PhotonTrackedTarget") + .def_ro("yaw", &photon::PhotonTrackedTarget::yaw) + .def_ro("pitch", &photon::PhotonTrackedTarget::pitch) + // String representation + .def("__repr__", [](const photon::PhotonTrackedTarget& t) { + std::string s; + fmt::format_to(std::back_inserter(s), + "PhotonTrackedTarget", t.yaw, t.pitch); + return s; + }); + nb::class_(m, "MultiTargetPNPResult") + .def_ro("fiducialIDsUsed", &photon::MultiTargetPNPResult::fiducialIDsUsed) + ; -// nb::class_(m, "PhotonPipelineResult") -// .def_ro("metadata", &photon::PhotonPipelineResult::metadata) -// .def_ro("targets", &photon::PhotonPipelineResult::targets) -// .def_ro("multitagResult", &photon::PhotonPipelineResult::multitagResult); + nb::class_(m, "PhotonPipelineResult") + .def_ro("metadata", &photon::PhotonPipelineResult::metadata) + .def_ro("targets", &photon::PhotonPipelineResult::targets) + .def_ro("multitagResult", &photon::PhotonPipelineResult::multitagResult); -// nb::class_(m, "PhotonCamera") -// .def(nb::init()) -// .def("GetDriverMode", &photon::PhotonCamera::GetDriverMode) -// .def("GetLatestResult", &photon::PhotonCamera::GetLatestResult); + nb::class_(m, "PhotonCamera") + .def(nb::init()) + .def("GetDriverMode", &photon::PhotonCamera::GetDriverMode) + .def("GetLatestResult", &photon::PhotonCamera::GetLatestResult); }