tccgen/win32: let __declspec(dllimport) imply extern
Also, retain storage qualifiers in type_decl, in particular
also for function pointers. This allows to get rid of this
very early hack in decl()
type.t |= (btype.t & VT_STATIC); /* Retain "static". */
which was to fix the case of
int main() { static int (*foo)(); ...
Also:
- missing __declspec(dllimport) is an error now
- except if the symbol is "_imp__symbol"
- demonstrate export/import of data in the dll example (while
'extern' isn't strictly required with dllimport anymore)
- new function 'patch_storage()' replaces 'weaken_symbol()'
and 'apply_visibility()'
- new function 'update_storage()' applies storage attributes
to Elf symbols.
- put_extern_sym/2 accepts new pseudo section SECTION_COMMON
- add -Wl,-export-all-symbols as alias for -rdynamic
- add -Wl,-subsystem=windows for mingw compatibility
- redefinition of 'sym' error for initialized global data
This commit is contained in:
@ -4,9 +4,10 @@
|
||||
//
|
||||
|
||||
#include <windows.h>
|
||||
#define DLL_EXPORT __declspec(dllexport)
|
||||
|
||||
DLL_EXPORT void HelloWorld (void)
|
||||
__declspec(dllexport) const char *hello_data = "(not set)";
|
||||
|
||||
__declspec(dllexport) void hello_func (void)
|
||||
{
|
||||
MessageBox (0, "Hello World!", "From DLL", MB_ICONINFORMATION);
|
||||
MessageBox (0, hello_data, "From DLL", MB_ICONINFORMATION);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user