示例#1
0
文件: dynlibhb.c 项目: emazv72/core
void * hb_libSymAddr( PHB_ITEM pDynLib, const char * pszSymbol )
{
   void * hDynLib = hb_libHandle( pDynLib );

   if( hDynLib )
   {
#if defined( HB_OS_WIN_CE )
      LPTSTR lpSymbol = hb_mbtowc( pszSymbol );
      void * hFuncAddr = ( void * ) GetProcAddress( ( HMODULE ) hDynLib, lpSymbol );
      hb_xfree( lpSymbol );
      return hFuncAddr;
#elif defined( HB_OS_WIN )
      return ( void * ) GetProcAddress( ( HMODULE ) hDynLib, pszSymbol );
#elif defined( HB_OS_OS2 )
      PFN pProcAddr = NULL;
      if( DosQueryProcAddr( ( HMODULE ) hDynLib, 0, ( PCSZ ) pszSymbol, &pProcAddr ) == NO_ERROR )
         return ( void * ) pProcAddr;
#elif defined( HB_HAS_DLFCN )
      return dlsym( hDynLib, pszSymbol );
#elif defined( HB_CAUSEWAY_DLL )
      return GetProcAddress( hDynLib, pszSymbol );
#else
      HB_SYMBOL_UNUSED( pszSymbol );
#endif
   }
   return NULL;
}
示例#2
0
void * hb_libSymAddr( PHB_ITEM pDynLib, const char * pszSymbol )
{
   void * hDynLib = hb_libHandle( pDynLib );

   if( hDynLib )
   {
#if defined( HB_OS_WIN )
      return ( void * ) GetProcAddress( ( HMODULE ) hDynLib, pszSymbol );
#elif defined( HB_OS_OS2 )
      PFN pProcAddr = NULL;
      if( DosQueryProcAddr( ( HMODULE ) hDynLib, 0, ( PCSZ ) pszSymbol, &pProcAddr ) == NO_ERROR )
         return ( void * ) pProcAddr;
#elif defined( HB_HAS_DLFCN )
      return dlsym( hDynLib, pszSymbol );
#else
      HB_SYMBOL_UNUSED( pszSymbol );
#endif
   }
   return NULL;
}