es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Un cambio en una biblioteca estática causará una violación de la regla de definición única (ODR)?

Digamos que tengo una librería estática libA y una librería estática libB. libA depende de libB y libA y libB se enlazan juntas en un ejecutable. Ahora estoy trabajando en un nuevo programa que también necesita libA y libB. La única diferencia es que se han cambiado algunas implementaciones de funciones (y/o interfaces que no son llamadas por libA) en B.

Según se publica en esta pregunta, solo necesito recompilar libB y enlazar la librería original libA con la nueva libB en el nuevo programa.

Mi pregunta es: ¿Habrá alguna violación de la ODR o algún problema de compatibilidad de ABI debido a que los encabezados de B son diferentes en comparación con cuando se compiló libA?

Encontré algunas preguntas similares en el enlace, pero no pudieron resolver mi pregunta.

Gracias de antemano.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Si los cambios realizados en la implementación de funciones y/o interfaz de libB no son llamados por libA, no debería haber violación de la Regla de Definición Única (ODR) ni problemas de compatibilidad ABI. En este escenario, los cambios en libB solo afectarán al nuevo programa que los requiere, mientras que libA y sus dependencias no se verán afectadas. Sin embargo, si los cambios realizados en la interfaz o implementación de libB son llamados por libA, entonces podrían surgir problemas y libA también deberá ser recompilada. Por lo tanto, es importante analizar cuidadosamente las dependencias y cambios realizados al actualizar bibliotecas estáticas para evitar problemas de compatibilidad.

Comments are closed.