19 #ifndef INCLUDE_RCF_DYNAMICLIB_HPP
20 #define INCLUDE_RCF_DYNAMICLIB_HPP
24 #include <boost/config.hpp>
25 #include <boost/shared_ptr.hpp>
36 typedef boost::shared_ptr<DynamicLib> DynamicLibPtr;
41 DynamicLib(
const std::string & dllName);
42 virtual ~DynamicLib();
52 template<
typename Pfn>
53 void loadDllFunction(Pfn & pfn,
const std::string & funcName)
56 pfn = (Pfn) GetProcAddress(mhDll, funcName.c_str());
59 DWORD dwErr = GetLastError();
60 Exception e(_RcfError_DllFuncLoad(mDllName, funcName), dwErr);
73 template<
typename Pfn>
74 void loadDllFunction(Pfn & pfn,
const std::string & funcName)
79 const char * szErr = dlerror();
80 RCF_UNUSED_VARIABLE(szErr);
82 pfn = (Pfn) dlsym(mhDll, funcName.c_str());
86 const char * szErr = dlerror();
91 Exception e(_RcfError_UnixDllFuncLoad(mDllName, funcName, strErr));
104 #define RCF_LOAD_DLL_FUNCTION(funcName) \
105 mDynamicLibPtr->loadDllFunction<Pfn_##funcName>(pfn_##funcName, #funcName);
107 #define RCF_LOAD_LIB_FUNCTION(funcName) \
108 pfn_##funcName = & funcName;
112 #endif // ! INCLUDE_RCF_DYNAMICLIB_HPP