From c286aa7931ce32935f51a7ee1c015370e4754ca2 Mon Sep 17 00:00:00 2001 From: Lars Bilke <lars.bilke@ufz.de> Date: Tue, 13 Sep 2022 22:26:44 +0200 Subject: [PATCH] [ML] Fixed linking issue under macOS when BUILD_SHARED_LIBS=ON. Linker error was: Undefined symbols for architecture arm64: "MaterialLib::Solids::Ehlers::StateVariables<2>::getEquivalentPlasticStrain() const", referenced from: vtable for MaterialLib::Solids::Ehlers::StateVariables<2> in unity_0_cxx.cxx.o "MaterialLib::Solids::Ehlers::StateVariables<3>::getEquivalentPlasticStrain() const", referenced from: vtable for MaterialLib::Solids::Ehlers::StateVariables<3> in unity_0_cxx.cxx.o --- MaterialLib/SolidModels/Ehlers.cpp | 3 +++ MaterialLib/SolidModels/Ehlers.h | 10 ++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/MaterialLib/SolidModels/Ehlers.cpp b/MaterialLib/SolidModels/Ehlers.cpp index 28adfbd6cae..83995b28955 100644 --- a/MaterialLib/SolidModels/Ehlers.cpp +++ b/MaterialLib/SolidModels/Ehlers.cpp @@ -842,6 +842,9 @@ SolidEhlers<DisplacementDim>::getInternalVariables() const template class SolidEhlers<2>; template class SolidEhlers<3>; +template struct StateVariables<2>; +template struct StateVariables<3>; + template <> MathLib::KelvinVector::KelvinMatrixType<3> sOdotS<3>( MathLib::KelvinVector::KelvinVectorType<3> const& v) diff --git a/MaterialLib/SolidModels/Ehlers.h b/MaterialLib/SolidModels/Ehlers.h index 9c9d3ec2bfb..d984878cf13 100644 --- a/MaterialLib/SolidModels/Ehlers.h +++ b/MaterialLib/SolidModels/Ehlers.h @@ -24,11 +24,10 @@ #include "BaseLib/Error.h" #include "MathLib/KelvinVector.h" +#include "MechanicsBase.h" #include "NumLib/NewtonRaphson.h" #include "ParameterLib/Parameter.h" -#include "MechanicsBase.h" - namespace MaterialLib { namespace Solids @@ -250,8 +249,8 @@ struct StateVariables Damage damage_prev; ///< \copydoc damage #ifndef NDEBUG - friend std::ostream& operator<<( - std::ostream& os, StateVariables<DisplacementDim> const& m) + friend std::ostream& operator<<(std::ostream& os, + StateVariables<DisplacementDim> const& m) { os << "State:\n" << "eps_p_D: " << m.eps_p.D << "\n" @@ -358,6 +357,9 @@ private: extern template class SolidEhlers<2>; extern template class SolidEhlers<3>; + +extern template struct StateVariables<2>; +extern template struct StateVariables<3>; } // namespace Ehlers } // namespace Solids } // namespace MaterialLib -- GitLab