Link LiteCoreStatic with or without Support lib?

My application is using couchbase-lite-core as database. It links LiteCoreStatic statically. But I get different behavior on Windows and MacOS when linking with Support static lib. I rmb someone from you told me that we should not link Support when linking LiteCoreStatic lib.
But I got this error on Windows:

LiteCoreStatic.lib(c4Observer.obj) : error LNK2001: unresolved external symbol "void __cdecl c4Internal::recordException(class std::exception const &,struct C4Error *)" (?recordException@c4Internal@@YAXAEBVexception@std@@PEAUC4Error@@@Z)
LiteCoreStatic.lib(c4Document.obj) : error LNK2019: unresolved external symbol "void __cdecl litecore::SecureRandomize(struct fleece::slice)" (?SecureRandomize@litecore@@YAXUslice@fleece@@@Z) referenced in function c4doc_generateID
LiteCoreStatic.lib(c4DocExpiration.obj) : error LNK2001: unresolved external symbol "bool __cdecl c4Internal::tryCatch(struct C4Error *,class fleece::function_ref<void __cdecl(void)>)" (?tryCatch@c4Internal@@YA_NPEAUC4Error@@V?$function_ref@$$A6AXXZ@fleece@@@Z)
LiteCoreStatic.lib(Database.cc.obj) : error LNK2001: unresolved external symbol "public: __cdecl litecore::FilePath::FilePath(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (??0FilePath@litecore@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@0@Z)
...

After link with Support lib, build on Windows is ok. However, on MacOS (which build ok without Support) has below issues when building with Support:

duplicate symbol __ZN8litecore9LogDomain3logENS_8LogLevelEPKcz in:
    /Volumes/DATA/git/cortex-v2-codereview/src/ThirdParty/couchbase-lite-core/build_cmake/macos/Libs/Debug/libSupport.a(Logging_Stub.cc.o)
    /Volumes/DATA/git/cortex-v2-codereview/src/ThirdParty/couchbase-lite-core/build_cmake/macos/Libs/Debug/libLiteCoreStatic.a(Logging.cc.o)
duplicate symbol __ZN8litecore8ActorLogE in:
    /Volumes/DATA/git/cortex-v2-codereview/src/ThirdParty/couchbase-lite-core/build_cmake/macos/Libs/Debug/libSupport.a(Logging_Stub.cc.o)
    /Volumes/DATA/git/cortex-v2-codereview/src/ThirdParty/couchbase-lite-core/build_cmake/macos/Libs/Debug/libLiteCoreStatic.a(Logging.cc.o)

I’m not sure how to do it correctly. How should I link with or without Support? Can anyone advice please?

The first place to start looking for tips about how to set up linking for a project linking with LiteCoreStatic is by looking at the CppTests program in the LiteCore repo. Here is a link to the CMake project. This project links against both libraries and is fine on all three desktop operating systems that we build on, so beyond that I’m not quite sure what could be happening.

@thamha, we do not support using LiteCore directly, for reasons like this. It hasn’t been a priority to set it up as a project that other people can use, and the APIs and functionality can change. It’s an internal component of Couchbase Lite.

We announced Couchbase Lite For C a few months ago, which is a thin wrapper around LiteCore with a C and C++ API. This will be a supported product when it reaches 1.0, and we’re informally supporting it until then so developers can help us test and improve it.

Thanks @borrrden and @jens. So I’ll plan to move to Couchbase Lite For C soon.