PLCnext API Documentation 25.0.2.69
DllConfig.h
1
2//
3// Copyright Phoenix Contact GmbH & Co. KG
4//
6#pragma once
7#include "Arp/System/Core/CxxConfig.h"
8
9#ifndef ARP_USE_ARP_SYSTEM_CORE
10
11 // nothing to include here, included by Arp.hpp
12
13#else
14
15
16 #ifndef ARP_INSIDE_ARP_H
17 #error Never include 'DllConfig.h' directly, just include 'Arp.h'
18 #endif
19
20 #if defined ARP_CXX_TOOLSET_MSVC
21
22 #define ARP_EXPORT __declspec(dllexport)
23 #define ARP_IMPORT __declspec(dllimport)
24 // The ARP_CXX_SYMBOL_EXPORT/ARP_CXX_SYMBOL_IMPORT macros are defined in .props files of Arp solution build,
25 // because in static libs the macro has to be empty,
26 // due to export enum problem when multiple dll's link to the origin definition
27
28 #elif defined ARP_CXX_TOOLSET_CYGWIN
29
30 #define ARP_EXPORT __attribute__ ((dllexport))
31 #define ARP_IMPORT __attribute__ ((dllimport))
32 #define ARP_CXX_SYMBOL_EXPORT __attribute__ ((dllexport))
33 #define ARP_CXX_SYMBOL_IMPORT __attribute__ ((dllimport))
34
35 #elif defined ARP_CXX_TOOLSET_GNUC
36
37 #if __GNUC__ >= 4
38
39 #define ARP_EXPORT __attribute__ ((visibility ("default")))
40 #define ARP_IMPORT __attribute__ ((visibility ("default")))
41 #define ARP_CXX_SYMBOL_EXPORT __attribute__ ((visibility ("default")))
42 #define ARP_CXX_SYMBOL_IMPORT __attribute__ ((visibility ("default")))
43
44 #else
45
46 #define ARP_EXPORT
47 #define ARP_IMPORT
48 #define ARP_CXX_SYMBOL_EXPORT
49 #define ARP_CXX_SYMBOL_IMPORT
50
51 #endif
52
53 #else
54
55 #error "Toolset is not supported"
56
57 #endif
58
59
60 #ifdef ARP_DOXIFY
61
63
65 #define ARP_EXPORT
66
68 #define ARP_IMPORT
69
71 #define ARP_CXX_SYMBOL_EXPORT
72
74 #define ARP_CXX_SYMBOL_IMPORT
75
76 #endif // ARP_DOXIFY
77#endif // ndef ARP_USE_ARP_SYSTEM_CORE