Thanks, It looks like you’ve already raised a PR to fix many of these.
> On 26 Nov 2020, at 12:18, Frederik Seiffert <frede...@algoriddim.com> wrote: >> Linking library libgnustep-base ... >> lld-link: warning: obj/libgnustep-base.obj/GSLocale.m.o: locally defined >> symbol imported: $_OBJC_CLASS_NSConstantString (defined in >> obj/libgnustep-base.obj/GSString.m.o) [LNK4217] >> ... > > These warnings (a couple pages of them) are probably harmless but maybe > someone knows what they are about? These are pretty-much unavoidable on Windows. In C/C++, you typically use a macro to control dlimport / dlexport of various things depending on whether you’re building the library or building something using the library. You can do this in Objective-C now, but it requires annotating all of the classes in -base, -gui. I think both of these projects already provide a macro that tells you that you’re building the library itself, so maybe it’s not too painful. > >> lld-link: error: undefined symbol: objc_skip_type_qualifiers >> lld-link: error: undefined symbol: objc_skip_typespec >> lld-link: error: undefined symbol: objc_alignof_type >> lld-link: error: undefined symbol: objc_sizeof_type >> lld-link: error: undefined symbol: objc_layout_structure >> lld-link: error: undefined symbol: objc_layout_structure_next_member >> lld-link: error: undefined symbol: objc_layout_structure_get_info >> lld-link: error: undefined symbol: objc_get_type_qualifiers >> lld-link: error: undefined symbol: objc_promoted_size > > These were built as part of libobjc2 (encoding2.c), but they don’t seem to be > exported in the DLL. Is encoding.h missing some export statements? Yup, these were missing their OBJC_PUBLIC things. Actually, your PR put them on the definitions, which might not be right - they probably should go in the .h so that they become dlimport when not building libobjc2. > >> lld-link: error: undefined symbol: __gnustep_objc_personality_v0 >> >>> referenced by obj/libgnustep-base.obj/GSICUString.m.o:(.xdata) >> >>> referenced by obj/libgnustep-base.obj/NSRegularExpression.m.o:(.xdata) >> >>> referenced by >> >>> obj/libgnustep-base.obj/NSRegularExpression.m.o:(GCC_except_table11) >> >> lld-link: error: undefined symbol: __declspec(dllimport) >> _objc_class_for_boxing_foreign_exception >> >>> referenced by >> >>> obj/libgnustep-base.obj/CXXException.m.o:(_c_CXXException__load) >> >> lld-link: error: undefined symbol: __declspec(dllimport) _objc_weak_load >> >>> referenced by obj/libgnustep-base.obj/NSObject.m.o:(_c_NSObject__load) >> >> lld-link: error: undefined symbol: __declspec(dllimport) _objc_load_callback >> >>> referenced by obj/libgnustep-base.obj/objc-load.m.o:(GSPrivateLoadModule) > > Not sure about these… Neither am I. These are used for DWARF exception handling, which we shouldn’t be doing on Windows. It may be that we get them from using a MinGW or Cygwin target triple when building GNUstep? David