[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Building GNUstep for Windows using Clang
From: |
Frederik Seiffert |
Subject: |
Re: Building GNUstep for Windows using Clang |
Date: |
Wed, 20 Jan 2021 21:30:07 +0100 |
Hi David,
> Am 20.01.2021 um 18:15 schrieb David Chisnall <gnustep@theravensnest.org>:
>
> For reference, the $_OBJC_CLASS symbols are meant to be exported from a DLL,
> they are the canonical pointers to the classes. The $_OBJC_REF_CLASS
> pointers are private to a library and are the pointer that code should use
> for references to a given class. These are initialised to the corresponding
> $_OBJC_CLASS variables and the runtime can update them to something different
> if we change the structure of the class structure in a future ABI.
Thanks for the clarification, that’s helpful. I tried defining the symbols as
"constant" in the module definition file, and that somehow fixed the linker
error:
EXPORTS
$_OBJC_CLASS_Test CONSTANT
$_OBJC_REF_CLASS_Test CONSTANT
This was totally by chance, but if I understand it correctly this means an
undecorated version (without "_imp_" prefix) is emitted to the import library:
https://docs.microsoft.com/en-us/cpp/build/importing-using-def-files?view=msvc-160
There’s one more issue though: both [Test class] and [Test new] (with "Test"
being defined in the DLL) only return null pointers in my testing. However
subclassing the Test root class locally works fine and allows instantiating the
subclass, as does a locally defined root class (same implementation as Test).
The following code (with "Sub" being a subclass of "Test"):
printf("%p %p\n", [Test class], [Test new]);
printf("%p %p\n", [Sub class], [Sub new]);
Prints:
0000000000000000 0000000000000000
00007FF73EDB0080 00000291D99247A8
Any idea? All other things I tried so far seemed to be working fine, though I’m
sure this won’t be the last of my questions...
Frederik
- Re: Building GNUstep for Windows using Clang, Frederik Seiffert, 2021/01/02
- Re: Building GNUstep for Windows using Clang, Frederik Seiffert, 2021/01/07
- Re: Building GNUstep for Windows using Clang, Frederik Seiffert, 2021/01/12
- Re: Building GNUstep for Windows using Clang, Frederik Seiffert, 2021/01/19
- Re: Building GNUstep for Windows using Clang, David Chisnall, 2021/01/19
- Re: Building GNUstep for Windows using Clang, Frederik Seiffert, 2021/01/19
- Re: Building GNUstep for Windows using Clang, Frederik Seiffert, 2021/01/20
- Re: Building GNUstep for Windows using Clang, David Chisnall, 2021/01/20
- Re: Building GNUstep for Windows using Clang,
Frederik Seiffert <=
- Re: Building GNUstep for Windows using Clang, David Chisnall, 2021/01/21
- Re: Building GNUstep for Windows using Clang, Frederik Seiffert, 2021/01/22
- GNUstep on Windows using Clang + MSVC ABI, Frederik Seiffert, 2021/01/29
- Re: GNUstep on Windows using Clang + MSVC ABI, David Chisnall, 2021/01/29