1 //  dll.hpp  --------------------------------------------------------------//
2 
3 //  Copyright 2010 Vicente J. Botet Escriba
4 
5 //  Distributed under the Boost Software License, Version 1.0.
6 //  See http://www.boost.org/LICENSE_1_0.txt
7 
8 
9 #ifndef BOOST_DETAIL_WINAPI_DLL_HPP
10 #define BOOST_DETAIL_WINAPI_DLL_HPP
11 
12 #include <boost/detail/winapi/basic_types.hpp>
13 #include <boost/detail/winapi/security.hpp>
14 
15 #ifdef BOOST_HAS_PRAGMA_ONCE
16 #pragma once
17 #endif
18 
19 namespace boost
20 {
21 namespace detail
22 {
23 namespace winapi
24 {
25 #if defined( BOOST_USE_WINDOWS_H )
26     typedef ::FARPROC FARPROC_;
27     typedef ::NEARPROC NEARPROC_;
28     typedef ::PROC PROC_;
29 
30 # ifdef BOOST_NO_ANSI_APIS
31     using ::LoadLibraryW;
32     using ::GetModuleHandleW;
33 # else
34     using ::LoadLibraryA;
35     using ::GetModuleHandleA;
36 # endif
37     using ::FreeLibrary;
38     using ::GetProcAddress;
39 #else
40 extern "C" {
41 # ifdef _WIN64
42     typedef INT_PTR_ (WINAPI *FARPROC_)();
43     typedef INT_PTR_ (WINAPI *NEARPROC_)();
44     typedef INT_PTR_ (WINAPI *PROC_)();
45 # else
46     typedef int (WINAPI *FARPROC_)();
47     typedef int (WINAPI *NEARPROC_)();
48     typedef int (WINAPI *PROC_)();
49 # endif // _WIN64
50 
51 # ifdef BOOST_NO_ANSI_APIS
52     __declspec(dllimport) HMODULE_ WINAPI
53         LoadLibraryW(
54             LPCWSTR_ lpFileName
55     );
56     __declspec(dllimport) HMODULE_ WINAPI
57         GetModuleHandleW(
58             LPCWSTR_ lpFileName
59     );
60 # else
61     __declspec(dllimport) HMODULE_ WINAPI
62         LoadLibraryA(
63             LPCSTR_ lpFileName
64     );
65     __declspec(dllimport) HMODULE_ WINAPI
66         GetModuleHandleA(
67             LPCSTR_ lpFileName
68     );
69 # endif
70 
71     __declspec(dllimport) BOOL_ WINAPI
72         FreeLibrary(
73             HMODULE_ hModule
74     );
75     __declspec(dllimport) FARPROC_ WINAPI
76         GetProcAddress(
77             HMODULE_ hModule,
78             LPCSTR_ lpProcName
79     );
80 }
81 #endif
82 }
83 }
84 }
85 
86 #endif // BOOST_DETAIL_WINAPI_DLL_HPP
87