Hello,

I have been using Bazel and have been trying to use Protocol Buffers in 
C++. I’ve reproduced my issue using a small amount of code:

car.proto
————————
syntax = "proto3";

message Car {
    int32 wheels = 1;
}

I then compiled this using protoc (v3.0.0) to produce car.pb.h and 
car.pb.cc.

main.cc:
————————
#include <fstream>
#include "car.pb.h"

int main(void) {
    Car car;
    car.set_wheels(10);

    std::fstream f ("~/Desktop/car.pb");
    car.SerializeToOstream(&f);
}

BUILD:
————————
cc_binary(
    name = "main",
    srcs = ["main.cc"],
    deps = [":car_pb"],
)

cc_library(
    name = "car_pb",
    srcs = ["car.pb.cc"],
    hdrs = ["car.pb.h"],
    deps = [],
)

bazel build :main runs fine, but then when I run bazel-bin/main I get:

dyld: Symbol not found: __ZN6google8protobuf7Message20DiscardUnknownFieldsEv
  Referenced from: /Users/devankuleindiren/Desktop/PBTest/bazel-bin/main
  Expected in: flat namespace
 in /Users/devankuleindiren/Desktop/PBTest/bazel-bin/main
Abort trap: 6

I understand that this is a dynamic linking issue, but I don’t know whether 
it’s because I’m using Bazel incorrectly, because I’ve installed protocol 
buffers incorrectly or because of something else?

I’m running macOS Sierra 10.12.1. Also, I’ve tried setting 
DYLD_LIBRARY_PATH to /usr/local/lib (where the libprotobuf libraries seem 
to be installed).

Thanks,
Devan

-- 
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to protobuf+unsubscr...@googlegroups.com.
To post to this group, send email to protobuf@googlegroups.com.
Visit this group at https://groups.google.com/group/protobuf.
For more options, visit https://groups.google.com/d/optout.

Reply via email to