Closed gcasa closed 2 years ago
@triplef Do you have any idea why this might be happening?
Can you provide the full linker invocation from creating a framework vs. a normal library on MSVC?
Im suspecting this is an issue in tools-make, as it has a number of modifications for MSVC which might need to be adapted for framework creation (which was never tested).
Here is the output from a framework build..
[gregc@mother-win-vm TestFramework] % make messages=yes debug=yes [0]
This is gnustep-make 2.9.0. Type 'make print-gnustep-make-help' for help.
Running in gnustep-make version 2 strict mode.
Making build-headers for framework TestFramework...
/c/GNUstep/x64/Debug/share/GNUstep/Makefiles/mkinstalldirs TestFramework.framework/Headers
/c/GNUstep/x64/Debug/share/GNUstep/Makefiles/mkinstalldirs TestFramework.framework/Headers/TestFramework/
/usr/bin/install -c -p -m 644 TestFramework/TestFramework.h TestFramework.framework/Headers/TestFramework/TestFramework.h
/usr/bin/install -c -p -m 644 TestFramework/TestObject.h TestFramework.framework/Headers/TestFramework/TestObject.h
/usr/bin/install -c -p -m 644 TestFramework/TestProtocol.h TestFramework.framework/Headers/TestFramework/TestProtocol.h
/c/GNUstep/x64/Debug/share/GNUstep/Makefiles/mkinstalldirs ./derived_src; \
touch derived_src/.stamp
/c/GNUstep/x64/Debug/share/GNUstep/Makefiles/mkinstalldirs TestFramework.framework/Resources
cd ./derived_src; \
if [ ! -h "TestFramework" ]; then \
rm -Rf ./TestFramework; \
cp -pR ../TestFramework.framework/Headers \
./TestFramework; \
fi
cd .; \
/c/GNUstep/x64/Debug/share/GNUstep/Makefiles/mkinstalldirs ./obj
Making all for framework TestFramework...
cd .; \
/c/GNUstep/x64/Debug/share/GNUstep/Makefiles/mkinstalldirs ./obj/TestFramework.obj/
cd .; /c/GNUstep/x64/Debug/share/GNUstep/Makefiles/mkinstalldirs obj/TestFramework.obj/TestFramework/
clang -m64 TestFramework/TestObject.m -c \
-DGNUSTEP -DGNUSTEP_BASE_LIBRARY=1 -DGNU_GUI_LIBRARY=1 -DGNUSTEP_RUNTIME=1 -D_NONFRAGILE_ABI=1 -DGNUSTEP_BASE_LIBRARY=1 -DGNUSTEP_WITH_DLL -fno-strict-aliasing -fexceptions -fobjc-exceptions -D_NATIVE_OBJC_EXCEPTIONS -pthread -DBUILD_libTestFramework_DLL=1 -Wno-microsoft-include -DDEBUG -fno-omit-frame-pointer -Wall -DGSWARN -DGSDIAGNOSE -Wno-import -g -fobjc-runtime=gnustep-2.0 -fblocks -fconstant-string-class=NSConstantString -I. -I./TestFramework -I./derived_src -I. -I/home/gregc/GNUstep/Library/Headers -I/c/GNUstep/x64/Debug/include \
-o obj/TestFramework.obj/TestFramework/TestObject.m.o
classes=""; \
for object_file in ./obj/TestFramework.obj/TestFramework/TestObject.m.o __dummy__; do \
if [ "$object_file" != "__dummy__" ]; then \
sym=`nm -Pg $object_file | sed -n -e '/^._OBJC_CLASS_[A-Za-z0-9_.]* [^U]/ {s/^._OBJC_CLASS_\([A-Za-z0-9_.]*\) [^U].*/\1/p;}' -e '/^__objc_class_name_[A-Za-z0-9_.]* [^U]/ {s/^__objc_class_name_\([A-Za-z0-9_.]*\) [^U].*/\1/p;}'`; \
classes="$classes $sym"; \
fi; \
done; \
classlist=""; \
classarray=""; \
for f in $classes __dummy__ ; do \
if [ "$f" != "__dummy__" ]; then \
if [ "$classlist" = "" ]; then \
classlist="@\"$f\""; \
classarray="(\"$f\""; \
else \
classlist="$classlist, @\"$f\""; \
classarray="$classarray, \"$f\""; \
fi; \
fi; \
done; \
if [ "$classlist" = "" ]; then \
classlist="NULL"; \
classarray="()"; \
else \
classlist="$classlist, NULL"; \
classarray="$classarray)"; \
fi; \
echo "$classarray" > ./derived_src/TestFramework-class-list; \
echo "#include <Foundation/NSObject.h>" > derived_src/NSFramework_TestFramework.m; \
echo "#include <Foundation/NSString.h>" > derived_src/NSFramework_TestFramework.m; \
echo "@interface NSFramework_TestFramework : NSObject" >> derived_src/NSFramework_TestFramework.m; \
echo "+ (NSString *)frameworkVersion;" >> derived_src/NSFramework_TestFramework.m; \
echo "+ (NSString *const*)frameworkClasses;" >> derived_src/NSFramework_TestFramework.m; \
echo "@end" >> derived_src/NSFramework_TestFramework.m; \
echo "@implementation NSFramework_TestFramework" >> derived_src/NSFramework_TestFramework.m; \
echo "+ (NSString *)frameworkVersion { return @\"0\"; }" >> derived_src/NSFramework_TestFramework.m; \
echo "static NSString *allClasses[] = {$classlist};" >> derived_src/NSFramework_TestFramework.m; \
echo "+ (NSString *const*)frameworkClasses { return allClasses; }" >> derived_src/NSFramework_TestFramework.m;\
echo "@end" >> derived_src/NSFramework_TestFramework.m
clang -m64 derived_src/NSFramework_TestFramework.m -c -DGNUSTEP -DGNUSTEP_BASE_LIBRARY=1 -DGNU_GUI_LIBRARY=1 -DGNUSTEP_RUNTIME=1 -D_NONFRAGILE_ABI=1 -DGNUSTEP_BASE_LIBRARY=1 -DGNUSTEP_WITH_DLL -fno-strict-aliasing -fexceptions -fobjc-exceptions -D_NATIVE_OBJC_EXCEPTIONS -pthread -DBUILD_libTestFramework_DLL=1 -Wno-microsoft-include -DDEBUG -fno-omit-frame-pointer -Wall -DGSWARN -DGSDIAGNOSE -Wno-import -g -fobjc-runtime=gnustep-2.0 -fblocks -fconstant-string-class=NSConstantString -I. -I./TestFramework -I./derived_src -I. -I/home/gregc/GNUstep/Library/Headers -I/c/GNUstep/x64/Debug/include -o obj/TestFramework.obj/NSFramework_TestFramework.o
\
clang -m64 -g -Wl,-dll -Wl,-implib:./TestFramework.framework/./TestFramework.lib -fuse-ld=lld -fexceptions -o ./TestFramework.framework/./TestFramework-0.dll obj/TestFramework.obj/NSFramework_TestFramework.o obj/TestFramework.obj/TestFramework/TestObject.m.o -L/home/gregc/GNUstep/Library/Libraries -L/c/GNUstep/x64/Debug/lib -lgnustep-gui -lgnustep-base -lobjc -lws2_32 -ladvapi32 -lcomctl32 -luser32 -lcomdlg32 -lmpr -lnetapi32 -lkernel32 -lshell32 -lmsvcrtd -lvcruntimed -lucrtd || rm -f ./TestFramework.framework/./TestFramework.lib ; \
(cd ./TestFramework.framework/.; \
rm -Rf TestFramework; \
cp -pR TestFramework-0.dll TestFramework) \
for f in TestFrameworkInfo.plist; do \
if [ -f .//$f -o -d .//$f ]; then \
cp -fr .//$f ./TestFramework.framework/Resources/; \
else \
echo "Warning: .//$f not found - ignoring"; \
fi; \
done
(echo "{"; echo ' NOTE = "Automatically generated, do not edit!";'; \
echo " NSExecutable = \"TestFramework.dll\";"; \
echo " NSMainNibFile = \"\";"; \
echo " NSPrincipalClass = \"TestFramework\";"; \
echo " Classes = "; \
cat ./derived_src/TestFramework-class-list; \
echo " ;"; \
echo "}") >TestFramework.framework/Resources/Info-gnustep.plist
if [ -r "TestFrameworkInfo.plist" ]; then \
plmerge TestFramework.framework/Resources/Info-gnustep.plist TestFrameworkInfo.plist; \
fi
[gregc@mother-win-vm TestFramework] %
Here is the output from a library build, for comparison...
[gregc@mother-win-vm TestLibrary] % make messages=yes debug=yes [0]
This is gnustep-make 2.9.0. Type 'make print-gnustep-make-help' for help.
Running in gnustep-make version 2 strict mode.
cd .; \
/c/GNUstep/x64/Debug/share/GNUstep/Makefiles/mkinstalldirs ./obj
Making all for library TestLibrary...
cd .; \
/c/GNUstep/x64/Debug/share/GNUstep/Makefiles/mkinstalldirs ./obj/TestLibrary.obj/
cd .; /c/GNUstep/x64/Debug/share/GNUstep/Makefiles/mkinstalldirs obj/TestLibrary.obj/TestLibrary/
clang -m64 TestLibrary/TestLibrary.m -c \
-DGNUSTEP -DGNUSTEP_BASE_LIBRARY=1 -DGNU_GUI_LIBRARY=1 -DGNUSTEP_RUNTIME=1 -D_NONFRAGILE_ABI=1 -DGNUSTEP_BASE_LIBRARY=1 -DGNUSTEP_WITH_DLL -fno-strict-aliasing -fexceptions -fobjc-exceptions -D_NATIVE_OBJC_EXCEPTIONS -pthread -DBUILD_libTestLibrary_DLL=1 -Wno-microsoft-include -DDEBUG -fno-omit-frame-pointer -Wall -DGSWARN -DGSDIAGNOSE -Wno-import -g -fobjc-runtime=gnustep-2.0 -fblocks -fconstant-string-class=NSConstantString -I. -I./TestLibrary -I. -I/home/gregc/GNUstep/Library/Headers -I/c/GNUstep/x64/Debug/include \
-o obj/TestLibrary.obj/TestLibrary/TestLibrary.m.o
clang -m64 -g -Wl,-dll -Wl,-implib:./obj/TestLibrary.lib -fuse-ld=lld -fexceptions -o ./obj/TestLibrary-0.dll obj/TestLibrary.obj/TestLibrary/TestLibrary.m.o -L/home/gregc/GNUstep/Library/Libraries -L/c/GNUstep/x64/Debug/lib -lgnustep-gui -lgnustep-base -lobjc -lws2_32 -ladvapi32 -lcomctl32 -luser32 -lcomdlg32 -lmpr -lnetapi32 -lkernel32 -lshell32 -lmsvcrtd -lvcruntimed -lucrtd
[gregc@mother-win-vm TestLibrary] %
The compiler is the MSVC version of clang...
[gregc@mother-win-vm TestLibrary] % which clang [1]
/c/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/Llvm/x64/bin/clang
[gregc@mother-win-vm TestLibrary] % [0]
Thanks. That looks all right at a glance:
TestObject.m
and the generated NSFramework_TestFramework.m
are built and linked into TestFramework.lib
/TestFramework-0.dll
TestLibrary.m
is built and linked into TestLibrary.lib
/TestLibrary-0.dll
In both cases the DLL is linked against gnustep-base and gnustep-gui. The libraries themselves should only contain what’s in TestObject/TestLibrary.
Can you elaborate on the issue / error you’re getting?
The lib file for the framework contains NO references to the contents of the library AT ALL...
[gregc@mother-win-vm TestFramework.framework] % nm TestFramework.lib [0]
TestFramework-0.dll:
U TestFramework-0_NULL_THUNK_DATA
0000000000000000 i .idata$2
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 I __IMPORT_DESCRIPTOR_TestFramework-0
U __NULL_IMPORT_DESCRIPTOR
TestFramework-0.dll:
0000000000000000 I __NULL_IMPORT_DESCRIPTOR
TestFramework-0.dll:
0000000000000000 I TestFramework-0_NULL_THUNK_DATA
It is basically useless. I am not sure why this is occurring.
Not sure either. Do you mind attaching your two test projects so I can give it a try here?
Sure... one sec...
git@github.com:gcasa/TestFramework.git git@github.com:gcasa/TestLibrary.git
They should both be up to date with what I built with here. Also, any changes I have made to tools-windows-msvc exists on libs-gui-fixes.
GC
Here is the link line from BASE which is working as expected...
clang -m64 NSXMLNode.m -c \
-DGNUSTEP_TARGET_DIR=\".\" -DGNUSTEP_TARGET_CPU=\"x86_64\" -DGNUSTEP_TARGET_OS=\"windows\" -DGNUSTEP_IS_FLATTENED=\"yes\" -DLIBRARY_COMBO=\"ng-gnu-gnu\" -DGNUSTEP_BASE_INTERNAL=1 -Wall -Wdeclaration-after-statement -Wcast-align -DGNUSTEP -DGNUSTEP_BASE_LIBRARY=1 -DGNU_GUI_LIBRARY=1 -DGNUSTEP_RUNTIME=1 -D_NONFRAGILE_ABI=1 -DGNUSTEP_BASE_LIBRARY=1 -DGNUSTEP_WITH_DLL -fno-strict-aliasing -fexceptions -fobjc-exceptions -D_NATIVE_OBJC_EXCEPTIONS -pthread -DBUILD_libgnustep_base_DLL=1 -Wno-microsoft-include -DDEBUG -fno-omit-frame-pointer -Wall -DGSWARN -DGSDIAGNOSE -Wno-import -g -fobjc-runtime=gnustep-2.0 -fblocks -fconstant-string-class=NSConstantString -I../Headers -I./. -I. -I/home/gregc/GNUstep/Library/Headers -I/c/GNUstep/x64/Debug/include -I/c/GNUstep/x64/Debug/include -I/c/GNUstep/x64/Debug/include -I/c/GNUstep/x64/Debug/include -I/c/GNUstep/x64/Debug/include -I/c/GNUstep/x64/Debug/include -IC:/GNUstep/x64/Debug/include -DLIBXML_STATIC -IC:/GNUstep/x64/Debug/include -DLIBXSLT_STATIC \
-o obj/libgnustep-base.obj/NSXMLNode.m.o
clang -m64 NSXMLParser.m -c \
-DGNUSTEP_TARGET_DIR=\".\" -DGNUSTEP_TARGET_CPU=\"x86_64\" -DGNUSTEP_TARGET_OS=\"windows\" -DGNUSTEP_IS_FLATTENED=\"yes\" -DLIBRARY_COMBO=\"ng-gnu-gnu\" -DGNUSTEP_BASE_INTERNAL=1 -Wall -Wdeclaration-after-statement -Wcast-align -DGNUSTEP -DGNUSTEP_BASE_LIBRARY=1 -DGNU_GUI_LIBRARY=1 -DGNUSTEP_RUNTIME=1 -D_NONFRAGILE_ABI=1 -DGNUSTEP_BASE_LIBRARY=1 -DGNUSTEP_WITH_DLL -fno-strict-aliasing -fexceptions -fobjc-exceptions -D_NATIVE_OBJC_EXCEPTIONS -pthread -DBUILD_libgnustep_base_DLL=1 -Wno-microsoft-include -DDEBUG -fno-omit-frame-pointer -Wall -DGSWARN -DGSDIAGNOSE -Wno-import -g -fobjc-runtime=gnustep-2.0 -fblocks -fconstant-string-class=NSConstantString -I../Headers -I./. -I. -I/home/gregc/GNUstep/Library/Headers -I/c/GNUstep/x64/Debug/include -I/c/GNUstep/x64/Debug/include -I/c/GNUstep/x64/Debug/include -I/c/GNUstep/x64/Debug/include -I/c/GNUstep/x64/Debug/include -I/c/GNUstep/x64/Debug/include -IC:/GNUstep/x64/Debug/include -DLIBXML_STATIC -IC:/GNUstep/x64/Debug/include -DLIBXSLT_STATIC \
-o obj/libgnustep-base.obj/NSXMLParser.m.o
clang -m64 NSXPCConnection.m -c \
-DGNUSTEP_TARGET_DIR=\".\" -DGNUSTEP_TARGET_CPU=\"x86_64\" -DGNUSTEP_TARGET_OS=\"windows\" -DGNUSTEP_IS_FLATTENED=\"yes\" -DLIBRARY_COMBO=\"ng-gnu-gnu\" -DGNUSTEP_BASE_INTERNAL=1 -Wall -Wdeclaration-after-statement -Wcast-align -DGNUSTEP -DGNUSTEP_BASE_LIBRARY=1 -DGNU_GUI_LIBRARY=1 -DGNUSTEP_RUNTIME=1 -D_NONFRAGILE_ABI=1 -DGNUSTEP_BASE_LIBRARY=1 -DGNUSTEP_WITH_DLL -fno-strict-aliasing -fexceptions -fobjc-exceptions -D_NATIVE_OBJC_EXCEPTIONS -pthread -DBUILD_libgnustep_base_DLL=1 -Wno-microsoft-include -DDEBUG -fno-omit-frame-pointer -Wall -DGSWARN -DGSDIAGNOSE -Wno-import -g -fobjc-runtime=gnustep-2.0 -fblocks -fconstant-string-class=NSConstantString -I../Headers -I./. -I. -I/home/gregc/GNUstep/Library/Headers -I/c/GNUstep/x64/Debug/include -I/c/GNUstep/x64/Debug/include -I/c/GNUstep/x64/Debug/include -I/c/GNUstep/x64/Debug/include -I/c/GNUstep/x64/Debug/include -I/c/GNUstep/x64/Debug/include -IC:/GNUstep/x64/Debug/include -DLIBXML_STATIC -IC:/GNUstep/x64/Debug/include -DLIBXSLT_STATIC \
-o obj/libgnustep-base.obj/NSXPCConnection.m.o
clang -m64 NSZone.m -c \
-DGNUSTEP_TARGET_DIR=\".\" -DGNUSTEP_TARGET_CPU=\"x86_64\" -DGNUSTEP_TARGET_OS=\"windows\" -DGNUSTEP_IS_FLATTENED=\"yes\" -DLIBRARY_COMBO=\"ng-gnu-gnu\" -DGNUSTEP_BASE_INTERNAL=1 -Wall -Wdeclaration-after-statement -Wcast-align -DGNUSTEP -DGNUSTEP_BASE_LIBRARY=1 -DGNU_GUI_LIBRARY=1 -DGNUSTEP_RUNTIME=1 -D_NONFRAGILE_ABI=1 -DGNUSTEP_BASE_LIBRARY=1 -DGNUSTEP_WITH_DLL -fno-strict-aliasing -fexceptions -fobjc-exceptions -D_NATIVE_OBJC_EXCEPTIONS -pthread -DBUILD_libgnustep_base_DLL=1 -Wno-microsoft-include -DDEBUG -fno-omit-frame-pointer -Wall -DGSWARN -DGSDIAGNOSE -Wno-import -g -fobjc-runtime=gnustep-2.0 -fblocks -fconstant-string-class=NSConstantString -I../Headers -I./. -I. -I/home/gregc/GNUstep/Library/Headers -I/c/GNUstep/x64/Debug/include -I/c/GNUstep/x64/Debug/include -I/c/GNUstep/x64/Debug/include -I/c/GNUstep/x64/Debug/include -I/c/GNUstep/x64/Debug/include -I/c/GNUstep/x64/Debug/include -IC:/GNUstep/x64/Debug/include -DLIBXML_STATIC -IC:/GNUstep/x64/Debug/include -DLIBXSLT_STATIC \
-o obj/libgnustep-base.obj/NSZone.m.o
clang -m64 externs.m -c \
-DGNUSTEP_TARGET_DIR=\".\" -DGNUSTEP_TARGET_CPU=\"x86_64\" -DGNUSTEP_TARGET_OS=\"windows\" -DGNUSTEP_IS_FLATTENED=\"yes\" -DLIBRARY_COMBO=\"ng-gnu-gnu\" -DGNUSTEP_BASE_INTERNAL=1 -Wall -Wdeclaration-after-statement -Wcast-align -DGNUSTEP -DGNUSTEP_BASE_LIBRARY=1 -DGNU_GUI_LIBRARY=1 -DGNUSTEP_RUNTIME=1 -D_NONFRAGILE_ABI=1 -DGNUSTEP_BASE_LIBRARY=1 -DGNUSTEP_WITH_DLL -fno-strict-aliasing -fexceptions -fobjc-exceptions -D_NATIVE_OBJC_EXCEPTIONS -pthread -DBUILD_libgnustep_base_DLL=1 -Wno-microsoft-include -DDEBUG -fno-omit-frame-pointer -Wall -DGSWARN -DGSDIAGNOSE -Wno-import -g -fobjc-runtime=gnustep-2.0 -fblocks -fconstant-string-class=NSConstantString -I../Headers -I./. -I. -I/home/gregc/GNUstep/Library/Headers -I/c/GNUstep/x64/Debug/include -I/c/GNUstep/x64/Debug/include -I/c/GNUstep/x64/Debug/include -I/c/GNUstep/x64/Debug/include -I/c/GNUstep/x64/Debug/include -I/c/GNUstep/x64/Debug/include -IC:/GNUstep/x64/Debug/include -DLIBXML_STATIC -IC:/GNUstep/x64/Debug/include -DLIBXSLT_STATIC \
-o obj/libgnustep-base.obj/externs.m.o
NSXMLParser.m:947:15: warning: 'sscanf' is deprecated: This function or variable may be unsafe. Consider using sscanf_s
instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
[-Wdeprecated-declarations]
if (sscanf(buf, "x%x;", &val) || sscanf(buf, "%d;", &val))
^
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\stdio.h:2239:20: note: 'sscanf' has been explicitly
marked deprecated here
_Check_return_ _CRT_INSECURE_DEPRECATE(sscanf_s)
^
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\vcruntime.h:320:55: note:
expanded from macro '_CRT_INSECURE_DEPRECATE'
#define _CRT_INSECURE_DEPRECATE(_Replacement) _CRT_DEPRECATE_TEXT( \
^
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\vcruntime.h:310:47: note:
expanded from macro '_CRT_DEPRECATE_TEXT'
#define _CRT_DEPRECATE_TEXT(_Text) __declspec(deprecated(_Text))
^
NSXMLParser.m:947:44: warning: 'sscanf' is deprecated: This function or variable may be unsafe. Consider using sscanf_s
instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
[-Wdeprecated-declarations]
if (sscanf(buf, "x%x;", &val) || sscanf(buf, "%d;", &val))
^
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\stdio.h:2239:20: note: 'sscanf' has been explicitly
marked deprecated here
_Check_return_ _CRT_INSECURE_DEPRECATE(sscanf_s)
^
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\vcruntime.h:320:55: note:
expanded from macro '_CRT_INSECURE_DEPRECATE'
#define _CRT_INSECURE_DEPRECATE(_Replacement) _CRT_DEPRECATE_TEXT( \
^
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\vcruntime.h:310:47: note:
expanded from macro '_CRT_DEPRECATE_TEXT'
#define _CRT_DEPRECATE_TEXT(_Text) __declspec(deprecated(_Text))
^
2 warnings generated.
clang -m64 objc-load.m -c \
-DGNUSTEP_TARGET_DIR=\".\" -DGNUSTEP_TARGET_CPU=\"x86_64\" -DGNUSTEP_TARGET_OS=\"windows\" -DGNUSTEP_IS_FLATTENED=\"yes\" -DLIBRARY_COMBO=\"ng-gnu-gnu\" -DGNUSTEP_BASE_INTERNAL=1 -Wall -Wdeclaration-after-statement -Wcast-align -DGNUSTEP -DGNUSTEP_BASE_LIBRARY=1 -DGNU_GUI_LIBRARY=1 -DGNUSTEP_RUNTIME=1 -D_NONFRAGILE_ABI=1 -DGNUSTEP_BASE_LIBRARY=1 -DGNUSTEP_WITH_DLL -fno-strict-aliasing -fexceptions -fobjc-exceptions -D_NATIVE_OBJC_EXCEPTIONS -pthread -DBUILD_libgnustep_base_DLL=1 -Wno-microsoft-include -DDEBUG -fno-omit-frame-pointer -Wall -DGSWARN -DGSDIAGNOSE -Wno-import -g -fobjc-runtime=gnustep-2.0 -fblocks -fconstant-string-class=NSConstantString -I../Headers -I./. -I. -I/home/gregc/GNUstep/Library/Headers -I/c/GNUstep/x64/Debug/include -I/c/GNUstep/x64/Debug/include -I/c/GNUstep/x64/Debug/include -I/c/GNUstep/x64/Debug/include -I/c/GNUstep/x64/Debug/include -I/c/GNUstep/x64/Debug/include -IC:/GNUstep/x64/Debug/include -DLIBXML_STATIC -IC:/GNUstep/x64/Debug/include -DLIBXSLT_STATIC \
-o obj/libgnustep-base.obj/objc-load.m.o
clang -m64 GSFFIInvocation.m -c \
-DGNUSTEP_TARGET_DIR=\".\" -DGNUSTEP_TARGET_CPU=\"x86_64\" -DGNUSTEP_TARGET_OS=\"windows\" -DGNUSTEP_IS_FLATTENED=\"yes\" -DLIBRARY_COMBO=\"ng-gnu-gnu\" -DGNUSTEP_BASE_INTERNAL=1 -Wall -Wdeclaration-after-statement -Wcast-align -DGNUSTEP -DGNUSTEP_BASE_LIBRARY=1 -DGNU_GUI_LIBRARY=1 -DGNUSTEP_RUNTIME=1 -D_NONFRAGILE_ABI=1 -DGNUSTEP_BASE_LIBRARY=1 -DGNUSTEP_WITH_DLL -fno-strict-aliasing -fexceptions -fobjc-exceptions -D_NATIVE_OBJC_EXCEPTIONS -pthread -DBUILD_libgnustep_base_DLL=1 -Wno-microsoft-include -DDEBUG -fno-omit-frame-pointer -Wall -DGSWARN -DGSDIAGNOSE -Wno-import -g -fobjc-runtime=gnustep-2.0 -fblocks -fconstant-string-class=NSConstantString -I../Headers -I./. -I. -I/home/gregc/GNUstep/Library/Headers -I/c/GNUstep/x64/Debug/include -I/c/GNUstep/x64/Debug/include -I/c/GNUstep/x64/Debug/include -I/c/GNUstep/x64/Debug/include -I/c/GNUstep/x64/Debug/include -I/c/GNUstep/x64/Debug/include -IC:/GNUstep/x64/Debug/include -DLIBXML_STATIC -IC:/GNUstep/x64/Debug/include -DLIBXSLT_STATIC \
-o obj/libgnustep-base.obj/GSFFIInvocation.m.o
In file included from objc-load.m:48:
././dynamic-load.h:73:1: warning: unused function '__objc_dynamic_get_symbol_path' [-Wunused-function]
__objc_dynamic_get_symbol_path(dl_handle_t handle, dl_symbol_t symbol)
^
1 warning generated.
clang -m64 -g -Wl,-dll -Wl,-implib:./obj/gnustep-base.lib -fuse-ld=lld -fexceptions -o ./obj/gnustep-base-1_28.dll obj/libgnustep-base.obj/GSLocale.m.o obj/libgnustep-base.obj/preface.m.o obj/libgnustep-base.obj/libgnustep-base-entry.m.o obj/libgnustep-base.obj/cifframe.m.o obj/libgnustep-base.obj/CXXException.m.o obj/libgnustep-base.obj/GSArray.m.o obj/libgnustep-base.obj/GSAttributedString.m.o obj/libgnustep-base.obj/GSBlocks.m.o obj/libgnustep-base.obj/GSConcreteValue.m.o obj/libgnustep-base.obj/GSCountedSet.m.o obj/libgnustep-base.obj/GSDictionary.m.o obj/libgnustep-base.obj/GSFTPURLHandle.m.o obj/libgnustep-base.obj/GSFormat.m.o obj/libgnustep-base.obj/GSHTTPAuthentication.m.o obj/libgnustep-base.obj/GSHTTPURLHandle.m.o obj/libgnustep-base.obj/GSICUString.m.o obj/libgnustep-base.obj/GSOrderedSet.m.o obj/libgnustep-base.obj/GSPrivateHash.m.o obj/libgnustep-base.obj/GSQuickSort.m.o obj/libgnustep-base.obj/GSRunLoopWatcher.m.o obj/libgnustep-base.obj/GSSet.m.o obj/libgnustep-base.obj/GSShellSort.m.o obj/libgnustep-base.obj/GSSocketStream.m.o obj/libgnustep-base.obj/GSStream.m.o obj/libgnustep-base.obj/GSString.m.o obj/libgnustep-base.obj/GSTimSort.m.o obj/libgnustep-base.obj/GSTLS.m.o obj/libgnustep-base.obj/GSValue.m.o obj/libgnustep-base.obj/GSSocksParser/GSSocksParser.m.o obj/libgnustep-base.obj/GSSocksParser/GSSocksParserPrivate.m.o obj/libgnustep-base.obj/GSSocksParser/GSSocks4Parser.m.o obj/libgnustep-base.obj/GSSocksParser/GSSocks5Parser.m.o obj/libgnustep-base.obj/NSAffineTransform.m.o obj/libgnustep-base.obj/NSAppleEventDescriptor.m.o obj/libgnustep-base.obj/NSAppleEventManager.m.o obj/libgnustep-base.obj/NSAppleScript.m.o obj/libgnustep-base.obj/NSArchiver.m.o obj/libgnustep-base.obj/NSArray.m.o obj/libgnustep-base.obj/NSAssertionHandler.m.o obj/libgnustep-base.obj/NSAttributedString.m.o obj/libgnustep-base.obj/NSAutoreleasePool.m.o obj/libgnustep-base.obj/NSBackgroundActivityScheduler.m.o obj/libgnustep-base.obj/NSBundle.m.o obj/libgnustep-base.obj/NSByteCountFormatter.m.o obj/libgnustep-base.obj/NSCache.m.o obj/libgnustep-base.obj/NSCachedURLResponse.m.o obj/libgnustep-base.obj/NSCalendar.m.o obj/libgnustep-base.obj/NSCalendarDate.m.o obj/libgnustep-base.obj/NSCallBacks.m.o obj/libgnustep-base.obj/NSCharacterSet.m.o obj/libgnustep-base.obj/NSClassDescription.m.o obj/libgnustep-base.obj/NSCoder.m.o obj/libgnustep-base.obj/NSCopyObject.m.o obj/libgnustep-base.obj/NSCountedSet.m.o obj/libgnustep-base.obj/NSConcreteHashTable.m.o obj/libgnustep-base.obj/NSConcreteMapTable.m.o obj/libgnustep-base.obj/NSConnection.m.o obj/libgnustep-base.obj/NSData.m.o obj/libgnustep-base.obj/NSDate.m.o obj/libgnustep-base.obj/NSDateComponentsFormatter.m.o obj/libgnustep-base.obj/NSDateFormatter.m.o obj/libgnustep-base.obj/NSDateInterval.m.o obj/libgnustep-base.obj/NSDateIntervalFormatter.m.o obj/libgnustep-base.obj/NSDebug.m.o obj/libgnustep-base.obj/NSDecimal.m.o obj/libgnustep-base.obj/NSDecimalNumber.m.o obj/libgnustep-base.obj/NSDictionary.m.o obj/libgnustep-base.obj/NSDistantObject.m.o obj/libgnustep-base.obj/NSDistributedLock.m.o obj/libgnustep-base.obj/NSDistributedNotificationCenter.m.o obj/libgnustep-base.obj/NSEnergyFormatter.m.o obj/libgnustep-base.obj/NSEnumerator.m.o obj/libgnustep-base.obj/NSError.m.o obj/libgnustep-base.obj/NSException.m.o obj/libgnustep-base.obj/NSExtensionContext.m.o obj/libgnustep-base.obj/NSExtensionItem.m.o obj/libgnustep-base.obj/NSFileCoordinator.m.o obj/libgnustep-base.obj/NSFileHandle.m.o obj/libgnustep-base.obj/NSFileManager.m.o obj/libgnustep-base.obj/NSFileVersion.m.o obj/libgnustep-base.obj/NSFileWrapper.m.o obj/libgnustep-base.obj/NSFormatter.m.o obj/libgnustep-base.obj/NSGarbageCollector.m.o obj/libgnustep-base.obj/NSGeometry.m.o obj/libgnustep-base.obj/NSHashTable.m.o obj/libgnustep-base.obj/NSHFSFileTypes.m.o obj/libgnustep-base.obj/NSHost.m.o obj/libgnustep-base.obj/NSHTTPCookie.m.o obj/libgnustep-base.obj/NSHTTPCookieStorage.m.o obj/libgnustep-base.obj/NSIndexPath.m.o obj/libgnustep-base.obj/NSIndexSet.m.o obj/libgnustep-base.obj/NSInvocation.m.o obj/libgnustep-base.obj/NSInvocationOperation.m.o obj/libgnustep-base.obj/NSISO8601DateFormatter.m.o obj/libgnustep-base.obj/NSItemProvider.m.o obj/libgnustep-base.obj/NSItemProviderReadingWriting.m.o obj/libgnustep-base.obj/NSJSONSerialization.m.o obj/libgnustep-base.obj/NSKeyedArchiver.m.o obj/libgnustep-base.obj/NSKeyedUnarchiver.m.o obj/libgnustep-base.obj/NSKeyValueCoding.m.o obj/libgnustep-base.obj/NSKeyValueObserving.m.o obj/libgnustep-base.obj/NSLengthFormatter.m.o obj/libgnustep-base.obj/NSLinguisticTagger.m.o obj/libgnustep-base.obj/NSLocale.m.o obj/libgnustep-base.obj/NSLock.m.o obj/libgnustep-base.obj/NSLog.m.o obj/libgnustep-base.obj/NSMapTable.m.o obj/libgnustep-base.obj/NSMassFormatter.m.o obj/libgnustep-base.obj/NSMeasurementFormatter.m.o obj/libgnustep-base.obj/NSMeasurement.m.o obj/libgnustep-base.obj/NSMetadata.m.o obj/libgnustep-base.obj/NSMetadataAttributes.m.o obj/libgnustep-base.obj/NSMethodSignature.m.o obj/libgnustep-base.obj/NSNotification.m.o obj/libgnustep-base.obj/NSNotificationCenter.m.o obj/libgnustep-base.obj/NSNotificationQueue.m.o obj/libgnustep-base.obj/NSNull.m.o obj/libgnustep-base.obj/NSNumber.m.o obj/libgnustep-base.obj/NSNumberFormatter.m.o obj/libgnustep-base.obj/NSObjCRuntime.m.o obj/libgnustep-base.obj/NSObject.m.o obj/libgnustep-base.obj/NSObjectScripting.m.o obj/libgnustep-base.obj/NSObject+NSComparisonMethods.m.o obj/libgnustep-base.obj/NSOperation.m.o obj/libgnustep-base.obj/NSOrderedSet.m.o obj/libgnustep-base.obj/NSOrthography.m.o obj/libgnustep-base.obj/NSPage.m.o obj/libgnustep-base.obj/NSPathUtilities.m.o obj/libgnustep-base.obj/NSPersonNameComponents.m.o obj/libgnustep-base.obj/NSPersonNameComponentsFormatter.m.o obj/libgnustep-base.obj/NSPipe.m.o obj/libgnustep-base.obj/NSPointerArray.m.o obj/libgnustep-base.obj/NSPointerFunctions.m.o obj/libgnustep-base.obj/NSConcretePointerFunctions.m.o obj/libgnustep-base.obj/NSPort.m.o obj/libgnustep-base.obj/NSPortCoder.m.o obj/libgnustep-base.obj/NSPortMessage.m.o obj/libgnustep-base.obj/NSPortNameServer.m.o obj/libgnustep-base.obj/NSPredicate.m.o obj/libgnustep-base.obj/NSProcessInfo.m.o obj/libgnustep-base.obj/NSProgress.m.o obj/libgnustep-base.obj/NSPropertyList.m.o obj/libgnustep-base.obj/NSProtocolChecker.m.o obj/libgnustep-base.obj/NSProxy.m.o obj/libgnustep-base.obj/NSRange.m.o obj/libgnustep-base.obj/NSRegularExpression.m.o obj/libgnustep-base.obj/NSRunLoop.m.o obj/libgnustep-base.obj/NSScanner.m.o obj/libgnustep-base.obj/NSScriptClassDescription.m.o obj/libgnustep-base.obj/NSScriptCoercionHandler.m.o obj/libgnustep-base.obj/NSScriptCommand.m.o obj/libgnustep-base.obj/NSScriptCommandDescription.m.o obj/libgnustep-base.obj/NSScriptExecutionContext.m.o obj/libgnustep-base.obj/NSScriptKeyValueCoding.m.o obj/libgnustep-base.obj/NSScriptObjectSpecifiers.m.o obj/libgnustep-base.obj/NSScriptStandardSuiteCommands.m.o obj/libgnustep-base.obj/NSScriptSuiteRegistry.m.o obj/libgnustep-base.obj/NSUnit.m.o obj/libgnustep-base.obj/NSUserActivity.m.o obj/libgnustep-base.obj/NSUserScriptTask.m.o obj/libgnustep-base.obj/NSSerializer.m.o obj/libgnustep-base.obj/NSSet.m.o obj/libgnustep-base.obj/NSSocketPort.m.o obj/libgnustep-base.obj/NSSocketPortNameServer.m.o obj/libgnustep-base.obj/NSSortDescriptor.m.o obj/libgnustep-base.obj/NSSpellServer.m.o obj/libgnustep-base.obj/NSString.m.o obj/libgnustep-base.obj/NSTask.m.o obj/libgnustep-base.obj/NSThread.m.o obj/libgnustep-base.obj/NSTimer.m.o obj/libgnustep-base.obj/NSTimeZone.m.o obj/libgnustep-base.obj/NSUbiquitousKeyValueStore.m.o obj/libgnustep-base.obj/NSUnarchiver.m.o obj/libgnustep-base.obj/NSUndoManager.m.o obj/libgnustep-base.obj/NSURL.m.o obj/libgnustep-base.obj/NSURLAuthenticationChallenge.m.o obj/libgnustep-base.obj/NSURLCache.m.o obj/libgnustep-base.obj/NSURLCredential.m.o obj/libgnustep-base.obj/NSURLConnection.m.o obj/libgnustep-base.obj/NSURLCredentialStorage.m.o obj/libgnustep-base.obj/NSURLDownload.m.o obj/libgnustep-base.obj/NSURLProtectionSpace.m.o obj/libgnustep-base.obj/NSURLProtocol.m.o obj/libgnustep-base.obj/NSURLRequest.m.o obj/libgnustep-base.obj/NSURLResponse.m.o obj/libgnustep-base.obj/NSTextCheckingResult.m.o obj/libgnustep-base.obj/NSURLHandle.m.o obj/libgnustep-base.obj/NSUserDefaults.m.o obj/libgnustep-base.obj/NSUserNotification.m.o obj/libgnustep-base.obj/NSUUID.m.o obj/libgnustep-base.obj/NSValue.m.o obj/libgnustep-base.obj/NSValueTransformer.m.o obj/libgnustep-base.obj/NSXMLDocument.m.o obj/libgnustep-base.obj/NSXMLDTD.m.o obj/libgnustep-base.obj/NSXMLDTDNode.m.o obj/libgnustep-base.obj/NSXMLElement.m.o obj/libgnustep-base.obj/NSXMLNode.m.o obj/libgnustep-base.obj/NSXMLParser.m.o obj/libgnustep-base.obj/NSXPCConnection.m.o obj/libgnustep-base.obj/NSZone.m.o obj/libgnustep-base.obj/externs.m.o obj/libgnustep-base.obj/objc-load.m.o obj/libgnustep-base.obj/GSFFIInvocation.m.o Additions/./obj/Additions.obj/GSTypeEncoding.c.o Additions/./obj/Additions.obj/GSObjCRuntime.m.o Additions/./obj/Additions.obj/GCObject.m.o Additions/./obj/Additions.obj/GCArray.m.o Additions/./obj/Additions.obj/GCDictionary.m.o Additions/./obj/Additions.obj/GSLock.m.o Additions/./obj/Additions.obj/GSMime.m.o Additions/./obj/Additions.obj/GSXML.m.o Additions/./obj/Additions.obj/GSFunctions.m.o Additions/./obj/Additions.obj/GSInsensitiveDictionary.m.o Additions/./obj/Additions.obj/NSArray+GNUstepBase.m.o Additions/./obj/Additions.obj/NSAttributedString+GNUstepBase.m.o Additions/./obj/Additions.obj/NSBundle+GNUstepBase.m.o Additions/./obj/Additions.obj/NSCalendarDate+GNUstepBase.m.o Additions/./obj/Additions.obj/NSData+GNUstepBase.m.o Additions/./obj/Additions.obj/NSDebug+GNUstepBase.m.o Additions/./obj/Additions.obj/NSError+GNUstepBase.m.o Additions/./obj/Additions.obj/NSHashTable+GNUstepBase.m.o Additions/./obj/Additions.obj/NSFileHandle+GNUstepBase.m.o Additions/./obj/Additions.obj/NSLock+GNUstepBase.m.o Additions/./obj/Additions.obj/NSMutableString+GNUstepBase.m.o Additions/./obj/Additions.obj/NSNumber+GNUstepBase.m.o Additions/./obj/Additions.obj/NSObject+GNUstepBase.m.o Additions/./obj/Additions.obj/NSPropertyList+GNUstepBase.m.o Additions/./obj/Additions.obj/NSProcessInfo+GNUstepBase.m.o Additions/./obj/Additions.obj/NSStream+GNUstepBase.m.o Additions/./obj/Additions.obj/NSString+GNUstepBase.m.o Additions/./obj/Additions.obj/NSTask+GNUstepBase.m.o Additions/./obj/Additions.obj/NSThread+GNUstepBase.m.o Additions/./obj/Additions.obj/NSURL+GNUstepBase.m.o Additions/./obj/Additions.obj/Unicode.m.o win32/./obj/win32.obj/GSFileHandle.m.o win32/./obj/win32.obj/GSRunLoopCtxt.m.o win32/./obj/win32.obj/NSMessagePort.m.o win32/./obj/win32.obj/NSMessagePortNameServer.m.o win32/./obj/win32.obj/NSStream.m.o win32/./obj/win32.obj/NSUserDefaults.m.o -L./obj -L/home/gregc/GNUstep/Library/Libraries -L/c/GNUstep/x64/Debug/lib -fuse-ld=lld -L/c/GNUstep/x64/Debug/lib -L/c/GNUstep/x64/Debug/lib -L/c/GNUstep/x64/Debug/lib -L/c/GNUstep/x64/Debug/lib/ng-gnu-gnu -L/c/GNUstep/x64/Debug/lib -lobjc -LC:/GNUstep/x64/Debug/lib -lxslt -LC:/GNUstep/x64/Debug/lib -lxml2 -liconv -L/c/GNUstep/x64/Debug/lib -lffi -lWs2_32 -licu -ldispatch -lws2_32 -ladvapi32 -lcomctl32 -luser32 -lcomdlg32 -lmpr -lnetapi32 -lkernel32 -lshell32 -lmsvcrtd -lvcruntimed -lucrtd -lobjc -LC:/GNUstep/x64/Debug/lib -lxslt -LC:/GNUstep/x64/Debug/lib -lxml2 -liconv -L/c/GNUstep/x64/Debug/lib -lffi -lWs2_32 -licu -ldispatch -lws2_32 -ladvapi32 -lcomctl32 -luser32 -lcomdlg32 -lmpr -lnetapi32 -lkernel32 -lshell32 -lmsvcrtd -lvcruntimed -lucrtd
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]
lld-link: warning: obj/libgnustep-base.obj/cifframe.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/GSArray.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/GSAttributedString.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/GSConcreteValue.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/GSCountedSet.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/GSDictionary.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/GSFTPURLHandle.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/GSFormat.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/GSHTTPAuthentication.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/GSHTTPURLHandle.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/GSOrderedSet.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/GSQuickSort.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/GSRunLoopWatcher.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/GSSet.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/GSShellSort.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/GSSocketStream.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/GSStream.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/GSTimSort.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/GSValue.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/GSSocksParser/GSSocksParser.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/GSSocksParser/GSSocksParserPrivate.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/GSSocksParser/GSSocks4Parser.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/GSSocksParser/GSSocks5Parser.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSAffineTransform.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSArchiver.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSArray.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSAssertionHandler.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSAttributedString.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSAutoreleasePool.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSBackgroundActivityScheduler.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSBundle.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSCalendar.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSCalendarDate.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSCallBacks.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSCharacterSet.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSCoder.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSConcreteHashTable.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSConcreteMapTable.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSConnection.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSData.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSDate.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSDateComponentsFormatter.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSDateFormatter.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSDateInterval.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSDebug.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSDecimal.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSDecimalNumber.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSDictionary.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSDistantObject.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSDistributedLock.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSDistributedNotificationCenter.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSEnumerator.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSError.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSException.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSFileHandle.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSFileManager.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSFileWrapper.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSGeometry.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSHost.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSHTTPCookie.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSHTTPCookieStorage.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSIndexPath.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSIndexSet.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSInvocation.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSInvocationOperation.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSISO8601DateFormatter.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSJSONSerialization.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSKeyedArchiver.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSKeyedUnarchiver.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSKeyValueCoding.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSKeyValueObserving.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSLinguisticTagger.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSLocale.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSLock.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSLog.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSMeasurement.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSMetadataAttributes.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSMethodSignature.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSNotification.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSNotificationCenter.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSNotificationQueue.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSNumber.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSNumberFormatter.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSObject.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSObject+NSComparisonMethods.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSOperation.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSOrderedSet.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSPathUtilities.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSPersonNameComponents.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSPersonNameComponentsFormatter.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSPipe.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSPointerArray.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSPort.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSPortCoder.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSPortMessage.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSPortNameServer.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSPredicate.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSProcessInfo.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSProgress.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSPropertyList.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSProtocolChecker.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSProxy.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSRange.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSRegularExpression.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSRunLoop.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSScanner.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSUnit.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSSerializer.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSSet.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSSocketPort.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSSocketPortNameServer.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSSortDescriptor.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSSpellServer.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSString.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSTask.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSThread.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSTimer.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSTimeZone.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSUbiquitousKeyValueStore.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSUnarchiver.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSUndoManager.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSURL.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSURLCache.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSURLConnection.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSURLCredentialStorage.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSURLProtocol.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSURLResponse.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSTextCheckingResult.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSURLHandle.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSUserDefaults.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSUserNotification.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSValue.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSValueTransformer.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSXMLDocument.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSXMLDTD.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSXMLElement.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSXMLNode.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSXMLParser.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/NSZone.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/externs.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/objc-load.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: obj/libgnustep-base.obj/GSFFIInvocation.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: Additions/./obj/Additions.obj/GSObjCRuntime.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: Additions/./obj/Additions.obj/GCArray.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: Additions/./obj/Additions.obj/GCDictionary.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: Additions/./obj/Additions.obj/GSLock.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: Additions/./obj/Additions.obj/GSMime.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: Additions/./obj/Additions.obj/GSXML.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: Additions/./obj/Additions.obj/GSFunctions.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: Additions/./obj/Additions.obj/GSInsensitiveDictionary.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: Additions/./obj/Additions.obj/NSArray+GNUstepBase.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: Additions/./obj/Additions.obj/NSAttributedString+GNUstepBase.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: Additions/./obj/Additions.obj/NSData+GNUstepBase.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: Additions/./obj/Additions.obj/NSDebug+GNUstepBase.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: Additions/./obj/Additions.obj/NSLock+GNUstepBase.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: Additions/./obj/Additions.obj/NSMutableString+GNUstepBase.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: Additions/./obj/Additions.obj/NSObject+GNUstepBase.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: Additions/./obj/Additions.obj/NSProcessInfo+GNUstepBase.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: Additions/./obj/Additions.obj/NSString+GNUstepBase.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: Additions/./obj/Additions.obj/NSURL+GNUstepBase.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: Additions/./obj/Additions.obj/Unicode.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: win32/./obj/win32.obj/GSFileHandle.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: win32/./obj/win32.obj/GSRunLoopCtxt.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: win32/./obj/win32.obj/NSMessagePort.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: win32/./obj/win32.obj/NSMessagePortNameServer.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: win32/./obj/win32.obj/NSStream.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
lld-link: warning: win32/./obj/win32.obj/NSUserDefaults.m.o: locally defined symbol imported: $_OBJC_CLASS_NSConstantString (defined in obj/libgnustep-base.obj/GSString.m.o) [LNK4217]
(echo "{"; \
echo " NSExecutable = \"gnustep-base\";"; \
echo " NSPrincipalClass = \"NSObject\";"; \
echo " GSBundleShortVersionString = \"1.28.0\";"; \
echo " GSBundleVersion = 128.0;"; \
echo " CFBundleShortVersionString = \"1.28.0\";"; \
echo " CFBundleVersion = 128.0;"; \
echo "}") > Info-gnustep.plist
make[1]: Leaving directory '/c/src/tools-windows-msvc/src/gnustep-base/Source'
Making all in Tools ...
make[1]: Entering directory '/c/src/tools-windows-msvc/src/gnustep-base/Tools'
cd .; \
/c/GNUstep/x64/Debug/share/GNUstep/Makefiles/mkinstalldirs ./obj
Making all for tool autogsdoc...
Making all for tool cvtenc...
cd .; \
/c/GNUstep/x64/Debug/share/GNUstep/Makefiles/mkinstalldirs ./obj/autogsdoc.obj/
cd .; \
/c/GNUstep/x64/Debug/share/GNUstep/Makefiles/mkinstalldirs ./obj/cvtenc.obj/
Making all for tool gspath...
Making all for tool gdnc...
cd .; \
/c/GNUstep/x64/Debug/share/GNUstep/Makefiles/mkinstalldirs ./obj/gspath.obj/
cd .; \
/c/GNUstep/x64/Debug/share/GNUstep/Makefiles/mkinstalldirs ./obj/gdnc.obj/
clang -m64 cvtenc.m -c \
-DGNUSTEP_BASE_INTERNAL=1 -Wall -Wdeclaration-after-statement -DGNUSTEP -DGNUSTEP_BASE_LIBRARY=1 -DGNU_GUI_LIBRARY=1 -DGNUSTEP_RUNTIME=1 -D_NONFRAGILE_ABI=1 -DGNUSTEP_BASE_LIBRARY=1 -DGNUSTEP_WITH_DLL -fno-strict-aliasing -fexceptions -fobjc-exceptions -D_NATIVE_OBJC_EXCEPTIONS -pthread -Wno-microsoft-include -DDEBUG -fno-omit-frame-pointer -Wall -DGSWARN -DGSDIAGNOSE -Wno-import -g -fobjc-runtime=gnustep-2.0 -fblocks -fconstant-string-class=NSConstantString -I../Source/. -I../Source/ -I../Headers -I. -I/home/gregc/GNUstep/Library/Headers -I/c/GNUstep/x64/Debug/include -I/c/GNUstep/x64/Debug/include -I/c/GNUstep/x64/Debug/include -I/c/GNUstep/x64/Debug/include -I/c/GNUstep/x64/Debug/include -I/c/GNUstep/x64/Debug/include -IC:/GNUstep/x64/Debug/include -DLIBXML_STATIC -IC:/GNUstep/x64/Debug/include -DLIBXSLT_STATIC \
-o obj/cvtenc.obj/cvtenc.m.o
clang -m64 autogsdoc.m -c \
-DGNUSTEP_BASE_INTERNAL=1 -Wall -Wdeclaration-after-statement -DGNUSTEP -DGNUSTEP_BASE_LIBRARY=1 -DGNU_GUI_LIBRARY=1 -DGNUSTEP_RUNTIME=1 -D_NONFRAGILE_ABI=1 -DGNUSTEP_BASE_LIBRARY=1 -DGNUSTEP_WITH_DLL -fno-strict-aliasing -fexceptions -fobjc-exceptions -D_NATIVE_OBJC_EXCEPTIONS -pthread -Wno-microsoft-include -DDEBUG -fno-omit-frame-pointer -Wall -DGSWARN -DGSDIAGNOSE -Wno-import -g -fobjc-runtime=gnustep-2.0 -fblocks -fconstant-string-class=NSConstantString -I../Source/. -I../Source/ -I../Headers -I. -I/home/gregc/GNUstep/Library/Headers -I/c/GNUstep/x64/Debug/include -I/c/GNUstep/x64/Debug/include -I/c/GNUstep/x64/Debug/include -I/c/GNUstep/x64/Debug/include -I/c/GNUstep/x64/Debug/include -I/c/GNUstep/x64/Debug/include -IC:/GNUstep/x64/Debug/include -DLIBXML_STATIC -IC:/GNUstep/x64/Debug/include -DLIBXSLT_STATIC \
-o obj/autogsdoc.obj/autogsdoc.m.o
I think the issue is that I am not using GS_EXPORT_CLASS in the headers to tell the linker to include the class in the library. Could that be the problem?
Ah yes, all public classes need to be annotated with __declspec(dllexport)
when building in order for them to be included in the DLL.
SMDH, I just tried this with the test library and it is still not showing up in the .lib. I am BEYOND frustrated.
I think you’ll have to define your own macro for this and guard it by a compile-time flag for the framework, because you need the classes to be annotated by dllexport when building, but dllimport when importing the header from other code. Something like this here:
Aha!! I see. I think it is defining it to nothing, since I am under MSVC and not MINGW so it needs a new macro to do this. I will see if this works. Thanks for the input!
That was the issue...
[gregc@mother-win-vm obj] % nm TestLibrary.lib [0]
TestLibrary-0.dll:
U TestLibrary-0_NULL_THUNK_DATA
0000000000000000 i .idata$2
0000000000000000 i .idata$4
0000000000000000 i .idata$5
0000000000000000 i .idata$6
0000000000000000 I __IMPORT_DESCRIPTOR_TestLibrary-0
U __NULL_IMPORT_DESCRIPTOR
TestLibrary-0.dll:
0000000000000000 I __NULL_IMPORT_DESCRIPTOR
TestLibrary-0.dll:
0000000000000000 I TestLibrary-0_NULL_THUNK_DATA
TestLibrary-0.dll:
0000000000000000 I .idata$4
0000000000000000 I .idata$5
0000000000000000 I .idata$6
0000000000000000 I __imp_$_OBJC_CLASS_TestLibrary
U __IMPORT_DESCRIPTOR_TestLibrary-0
TestLibrary-0.dll:
0000000000000000 I .idata$4
0000000000000000 I .idata$5
0000000000000000 I .idata$6
0000000000000000 I __imp_$_OBJC_REF_CLASS_TestLibrary
U __IMPORT_DESCRIPTOR_TestLibrary-0
make: *** [/c/GNUstep/x64/Debug/share/GNUstep/Makefiles/Master/tool.make:71: internal-all] Error 2
[gregc@mother-win-vm TestFrameworkTool] % make [2]
This is gnustep-make 2.9.0. Type 'make print-gnustep-make-help' for help.
Running in gnustep-make version 2 strict mode.
Making all for tool TestFrameworkTool...
Compiling file TestFrameworkTool/main.m ...
Linking tool TestFrameworkTool ...
lld-link: error: undefined symbol: $_OBJC_REF_CLASS_TestObject
>>> referenced by C:\tools\msys64\home\gregc\Development\Tests\TestFrameworkTool\TestFrameworkTool\main.m:15
>>> ./obj/TestFrameworkTool.obj/TestFrameworkTool/main.m.o:(main)
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[3]: *** [/c/GNUstep/x64/Debug/share/GNUstep/Makefiles/Instance/tool.make:89: obj/TestFrameworkTool.exe] Error 1
make[2]: *** [/c/GNUstep/x64/Debug/share/GNUstep/Makefiles/Instance/tool.make:74: internal-tool-all_] Error 2
make[1]: *** [/c/GNUstep/x64/Debug/share/GNUstep/Makefiles/Master/rules.make:297: TestFrameworkTool.all.tool.variables] Error 2
make: *** [/c/GNUstep/x64/Debug/share/GNUstep/Makefiles/Master/tool.make:71: internal-all] Error 2
[gregc@mother-win-vm TestFrameworkTool] %
I am apparently still missing something. :/
Is TestObject annotated with __declspec(dllimport)
when building TestFrameworkTool?
TestObject is included from the framework and it is annotated in the header. I added a define for this. I am likely missing something simple here.
So just to make sure, it’s annotated with __declspec(dllexport)
when building the framework, and with __declspec(dllimport)
when including it from the framework?
Could you also paste the linker invocation?
[gregc@mother-win-vm TestFrameworkTool] % dir [0]
main.m
[gregc@mother-win-vm TestFrameworkTool] % more main.m [0]
//
// main.m
// TestFrameworkTool
//
// Created by Gregory Casamento on 8/28/22.
//
#import <Foundation/Foundation.h>
#import <TestFramework/TestObject.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
NSLog(@"Hello, World!");
TestObject *obj = [[TestObject alloc] init];
[obj testMethod: nil];
}
return 0;
}
[gregc@mother-win-vm TestFrameworkTool] % more /c/GNUstep/x64/Debug/include/TestFramework/TestObject.h
//
// TestObject.h
// TestFramework
//
// Created by Gregory Casamento on 8/27/22.
//
#ifndef TestObject_h
#define TestObject_h
#import "TestProtocol.h"
EPF_EXPORT_CLASS
@interface TestObject : NSObject <TestProtocol>
@end
#endif /* TestObject_h */
[gregc@mother-win-vm TestFrameworkTool] % more /c/GNUstep/x64/Debug/include/TestFramework/TestProtocol.h
//
// TestProtocol.h
// TestFramework
//
// Created by Gregory Casamento on 8/27/22.
//
#ifndef TestProtocol_h
#define TestProtocol_h
#import <Foundation/Foundation.h>
# define EPF_EXPORT_CLASS __declspec(dllexport)
# define EPF_EXPORT extern __declspec(dllexport)
# define EPF_IMPORT __declspec(dllimport)
# define EPF_DECLARE __declspec(dllexport)
@protocol TestProtocol <NSObject>
- (void) testMethod: (id)obj;
@end
#endif /* TestProtocol_h */
Here is the source and headers... it should be getting that define.
[gregc@mother-win-vm TestFrameworkTool] % make messages=yes debug=yes [0]
This is gnustep-make 2.9.0. Type 'make print-gnustep-make-help' for help.
Running in gnustep-make version 2 strict mode.
cd .; \
/c/GNUstep/x64/Debug/share/GNUstep/Makefiles/mkinstalldirs ./obj
Making all for tool TestFrameworkTool...
cd .; \
/c/GNUstep/x64/Debug/share/GNUstep/Makefiles/mkinstalldirs ./obj/TestFrameworkTool.obj/
cd .; /c/GNUstep/x64/Debug/share/GNUstep/Makefiles/mkinstalldirs obj/TestFrameworkTool.obj/TestFrameworkTool/
clang -m64 TestFrameworkTool/main.m -c \
-DGNUSTEP -DGNUSTEP_BASE_LIBRARY=1 -DGNU_GUI_LIBRARY=1 -DGNUSTEP_RUNTIME=1 -D_NONFRAGILE_ABI=1 -DGNUSTEP_BASE_LIBRARY=1 -DGNUSTEP_WITH_DLL -fno-strict-aliasing -fexceptions -fobjc-exceptions -D_NATIVE_OBJC_EXCEPTIONS -pthread -Wno-microsoft-include -DDEBUG -fno-omit-frame-pointer -Wall -DGSWARN -DGSDIAGNOSE -Wno-import -g -fobjc-runtime=gnustep-2.0 -fblocks -fconstant-string-class=NSConstantString -I. -I./TestFrameworkTool -I. -I/home/gregc/GNUstep/Library/Headers -I/c/GNUstep/x64/Debug/include \
-o obj/TestFrameworkTool.obj/TestFrameworkTool/main.m.o
clang -m64 -fuse-ld=lld -fexceptions -fobjc-runtime=gnustep-2.0 -fblocks -o obj/TestFrameworkTool.exe \
./obj/TestFrameworkTool.obj/TestFrameworkTool/main.m.o \
-L/home/gregc/GNUstep/Library/Libraries -L/c/GNUstep/x64/Debug/lib -lgnustep-base -lobjc -lws2_32 -ladvapi32 -lcomctl32 -luser32 -lcomdlg32 -lmpr -lnetapi32 -lkernel32 -lshell32 -lmsvcrtd -lvcruntimed -lucrtd
lld-link: error: undefined symbol: $_OBJC_REF_CLASS_TestObject
>>> referenced by C:\tools\msys64\home\gregc\Development\Tests\TestFrameworkTool\TestFrameworkTool\main.m:15
>>> ./obj/TestFrameworkTool.obj/TestFrameworkTool/main.m.o:(main)
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[3]: *** [/c/GNUstep/x64/Debug/share/GNUstep/Makefiles/Instance/tool.make:89: obj/TestFrameworkTool.exe] Error 1
make[2]: *** [/c/GNUstep/x64/Debug/share/GNUstep/Makefiles/Instance/tool.make:74: internal-tool-all_] Error 2
make[1]: *** [/c/GNUstep/x64/Debug/share/GNUstep/Makefiles/Master/rules.make:297: TestFrameworkTool.all.tool.variables] Error 2
make: *** [/c/GNUstep/x64/Debug/share/GNUstep/Makefiles/Master/tool.make:71: internal-all] Error 2
[gregc@mother-win-vm TestFrameworkTool] %
Here is the linker invocation...
Looks like TestFramework is not actually being linked?
But also you need to define EPF_EXPORT_CLASS
dynamically as I explained above.
Oh yikes... I generated the GNUmakefile with buildtool and it didn't generate the bit that links the framework.
[gregc@mother-win-vm TestFrameworkTool] % make messages=yes [2]
This is gnustep-make 2.9.0. Type 'make print-gnustep-make-help' for help.
Running in gnustep-make version 2 strict mode.
Making all for tool TestFrameworkTool...
clang -m64 -fuse-ld=lld -fexceptions -fobjc-runtime=gnustep-2.0 -fblocks -o obj/TestFrameworkTool.exe \
./obj/TestFrameworkTool.obj/TestFrameworkTool/main.m.o \
-L/home/gregc/GNUstep/Library/Libraries -L/c/GNUstep/x64/Debug/lib -lgnustep-base -lTestFramework -lobjc -lws2_32 -ladvapi32 -lcomctl32 -luser32 -lcomdlg32 -lmpr -lnetapi32 -lkernel32 -lshell32 -lmsvcrtd -lvcruntimed -lucrtd
lld-link: error: undefined symbol: $_OBJC_REF_CLASS_TestObject
>>> referenced by C:\tools\msys64\home\gregc\Development\Tests\TestFrameworkTool\TestFrameworkTool\main.m:15
>>> ./obj/TestFrameworkTool.obj/TestFrameworkTool/main.m.o:(main)
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[3]: *** [/c/GNUstep/x64/Debug/share/GNUstep/Makefiles/Instance/tool.make:89: obj/TestFrameworkTool.exe] Error 1
make[2]: *** [/c/GNUstep/x64/Debug/share/GNUstep/Makefiles/Instance/tool.make:74: internal-tool-all_] Error 2
make[1]: *** [/c/GNUstep/x64/Debug/share/GNUstep/Makefiles/Master/rules.make:297: TestFrameworkTool.all.tool.variables] Error 2
make: *** [/c/GNUstep/x64/Debug/share/GNUstep/Makefiles/Master/tool.make:71: internal-all] Error 2
[gregc@mother-win-vm TestFrameworkTool] %
Still the same problem. SMDH...
Please read what I wrote multiple times above. You need to define the macro something like this, and define EPF_BUILD_FRAMEWORK
or some other flag when building the framework (but not when importing the header from other sources):
#if EPF_BUILD_FRAMEWORK
#define EPF_EXPORT_CLASS __declspec(dllexport)
#else
#define EPF_EXPORT_CLASS __declspec(dllimport)
#endif
Ah! Stupid me... I missed it. Thanks! I will try this and let you know.
#ifdef BUILD_FRAMEWORK
# define EPF_EXPORT_CLASS __declspec(dllexport)
# define EPF_EXPORT extern __declspec(dllexport)
# define EPF_IMPORT __declspec(dllimport)
# define EPF_DECLARE __declspec(dllexport)
#else
# define EPF_EXPORT_CLASS __declspec(dllimport)
# define EPF_EXPORT extern __declspec(dllimport)
# define EPF_IMPORT __declspec(dllimport)
# define EPF_DECLARE __declspec(dllimport)
#endif
Seems like I didn't have a clean build. I believe this solves it. If I have any other issues I will reopen. Thanks. I didn't know the intricacies of building using MSVC… :) Now I do.
For whatever reason, building a framework using the MSVC environment results in an unusable .lib file that contains next to nothing. Building a library, however results in a usable library.. e.g. gnustep-base and gnustep-gui. I am looking into why this is happening, but I am not sure what the difference is.
Building frameworks using MSYS2 works perfectly, but doing so with MSVC as the build environment does not. I will provide examples as they become available.
GC