Skip to content

Missing definitions from 0.9.0 #205

Open

Description

@Alfus

When trying to compile against master I am getting the following linker errors:

Undefined symbols for architecture arm64:
  "cel::base_internal::MessageTypeFieldCount(unsigned long)", referenced from:
      cel::base_internal::LegacyStructType::field_count() const in libdata.a(struct_type.o)
  "cel::interop_internal::ProtoStructValueToMessageWrapper(cel::Value const&)", referenced from:
      cel::interop_internal::ToLegacyValue(google::protobuf::Arena*, cel::Handle<cel::Value> const&, bool) in libinterop.a(interop.o)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

I don't see a definition for the first one:
https://github.com/search?q=repo%3Agoogle%2Fcel-cpp%20MessageTypeFieldCount&type=code

Though the second one seems to be defined here: https://github.com/google/cel-cpp/blob/58397d797f2c98e2450e5b1df3d5b2048f1e7499/extensions/protobuf/struct_value.cc#L74
though without the ABSL_ATTRIBUTE_WEAK

Activity

  1. Alfus commented on Jun 5, 2023

    @Alfus
    ContributorAuthor

    The first one seems to be just missing, the second one seems to be a cycle in the dep graph, that is being 'solved' via ABSL_ATTRIBUTE_WEAK:

    // ABSL_ATTRIBUTE_WEAK
    //
    // Tags a function as weak for the purposes of compilation and linking.
    // Weak attributes did not work properly in LLVM's Windows backend before
    // 9.0.0, so disable them there. See https://bugs.llvm.org/show_bug.cgi?id=37598
    // for further information.
    // The MinGW compiler doesn't complain about the weak attribute until the link
    // step, presumably because Windows doesn't use ELF binaries.
    

    I suspect the problem with the second one is, the xcode linker used on macos does not respect the weak attribute.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions