That is illegal in C++, as it violates the One Definition Rule (ODR). For example, the compiler may choose a sensible width in bytes for the enum based on its contents. If one declaration has only one value and it is 0, and the other has many values which may be large, then you will end up with two different (incompatible) notions of how wide this enum type is. That's not going to work, and is a violation of the language requirements.
You might consider having the library take a plain integer of some kind (e.g. uint32_t or uint64_t), using 0 as the default, and just letting the enum values be opaque to the library (they must be anyway, since the library has no knowledge of any values other than zero).