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