Ensure DynamicCostFunctionToFunctor to be exported
Fixes #1022
Change-Id: I090790ac4a1f32e6cb318bc32273d63898659dc3
diff --git a/include/ceres/dynamic_cost_function_to_functor.h b/include/ceres/dynamic_cost_function_to_functor.h
index bc2fd3b..9226cf4 100644
--- a/include/ceres/dynamic_cost_function_to_functor.h
+++ b/include/ceres/dynamic_cost_function_to_functor.h
@@ -1,5 +1,5 @@
// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2023 Google Inc. All rights reserved.
+// Copyright 2025 Google Inc. All rights reserved.
// http://ceres-solver.org/
//
// Redistribution and use in source and binary forms, with or without
@@ -105,20 +105,13 @@
class CERES_EXPORT DynamicCostFunctionToFunctor {
public:
// Takes ownership of cost_function.
- explicit DynamicCostFunctionToFunctor(CostFunction* cost_function)
- : DynamicCostFunctionToFunctor{
- std::unique_ptr<CostFunction>{cost_function}} {}
+ explicit DynamicCostFunctionToFunctor(CostFunction* cost_function);
// Takes ownership of cost_function.
explicit DynamicCostFunctionToFunctor(
- std::unique_ptr<CostFunction> cost_function)
- : cost_function_(std::move(cost_function)) {
- CHECK(cost_function_ != nullptr);
- }
+ std::unique_ptr<CostFunction> cost_function);
- bool operator()(double const* const* parameters, double* residuals) const {
- return cost_function_->Evaluate(parameters, residuals, nullptr);
- }
+ bool operator()(double const* const* parameters, double* residuals) const;
template <typename JetT>
bool operator()(JetT const* const* inputs, JetT* output) const {
diff --git a/internal/ceres/CMakeLists.txt b/internal/ceres/CMakeLists.txt
index 1355a38..c409eef 100644
--- a/internal/ceres/CMakeLists.txt
+++ b/internal/ceres/CMakeLists.txt
@@ -1,5 +1,5 @@
# Ceres Solver - A fast non-linear least squares minimizer
-# Copyright 2022 Google Inc. All rights reserved.
+# Copyright 2024 Google Inc. All rights reserved.
# http://ceres-solver.org/
#
# Redistribution and use in source and binary forms, with or without
@@ -179,6 +179,7 @@
dogleg_strategy.cc
dynamic_compressed_row_jacobian_writer.cc
dynamic_compressed_row_sparse_matrix.cc
+ dynamic_cost_function_to_functor.cc
dynamic_sparse_normal_cholesky_solver.cc
eigensparse.cc
evaluation_callback.cc
diff --git a/internal/ceres/dynamic_cost_function_to_functor.cc b/internal/ceres/dynamic_cost_function_to_functor.cc
new file mode 100644
index 0000000..42e8fac
--- /dev/null
+++ b/internal/ceres/dynamic_cost_function_to_functor.cc
@@ -0,0 +1,54 @@
+// Ceres Solver - A fast non-linear least squares minimizer
+// Copyright 2025 Google Inc. All rights reserved.
+// http://ceres-solver.org/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// * Redistributions of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+// * Neither the name of Google Inc. nor the names of its contributors may be
+// used to endorse or promote products derived from this software without
+// specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+// POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: sameeragarwal@google.com (Sameer Agarwal)
+// dgossow@google.com (David Gossow)
+
+#include "ceres/dynamic_cost_function_to_functor.h"
+
+#include <memory>
+
+namespace ceres {
+
+DynamicCostFunctionToFunctor::DynamicCostFunctionToFunctor(
+ CostFunction* cost_function)
+ : DynamicCostFunctionToFunctor{
+ std::unique_ptr<CostFunction>{cost_function}} {}
+
+DynamicCostFunctionToFunctor::DynamicCostFunctionToFunctor(
+ std::unique_ptr<CostFunction> cost_function)
+ : cost_function_(std::move(cost_function)) {
+ CHECK(cost_function_ != nullptr);
+}
+
+bool DynamicCostFunctionToFunctor::operator()(double const* const* parameters,
+ double* residuals) const {
+ return cost_function_->Evaluate(parameters, residuals, nullptr);
+}
+
+} // namespace ceres