Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include <windows.h>
00026 #include <stdlib.h>
00027 #include "ltdl_win32.h"
00028
00029
00030
00031 lt_dlhandle lastHandle = NULL;
00032
00033
00034 char errortext[512];
00035
00036
00037
00038 void lt_dlinit( void )
00039 {
00040 lastHandle = NULL;
00041 }
00042
00043
00044
00045 void lt_dlexit( void )
00046 {
00047 lt_dlhandle prev;
00048
00049 while ( lastHandle != NULL )
00050 {
00051 if ( lastHandle->hinstLib )
00052 FreeLibrary( lastHandle->hinstLib );
00053 prev = lastHandle->previousHandle;
00054 free( lastHandle );
00055 lastHandle = prev;
00056 }
00057 }
00058
00059
00060
00061
00062
00063 lt_dlhandle lt_dlopenext( char* dllname )
00064 {
00065 lt_dlhandle dlhandle = malloc( sizeof ( struct __dlhandle ) );
00066 memset( dlhandle, '\0', sizeof ( struct __dlhandle ) );
00067
00068 dlhandle->hinstLib = LoadLibrary( dllname );
00069 if ( !dlhandle->hinstLib )
00070 {
00071 free( dlhandle );
00072 return NULL;
00073 }
00074
00075 dlhandle->previousHandle = lastHandle;
00076 lastHandle = dlhandle;
00077
00078 return dlhandle;
00079 }
00080
00081
00082
00083 const char* lt_dlerror()
00084 {
00085 strncpy( errortext, "No error information", 512 );
00086
00087 return errortext;
00088 }
00089
00090
00091
00092 void* lt_dlsym( lt_dlhandle dlhandle, const char* symbol )
00093 {
00094 if ( dlhandle->hinstLib )
00095 {
00096 #ifdef __BORLANDC__
00097 unsigned int bufferLength = strlen( symbol ) + 2;
00098 char * buffer = (char *) malloc( bufferLength );
00099 void * retPointer;
00100
00101 buffer[0] = '_';
00102 strncpy( &buffer[1], symbol, bufferLength - 2 );
00103 buffer[bufferLength - 1] = '\0';
00104 retPointer = GetProcAddress( dlhandle->hinstLib, buffer );
00105 free( buffer );
00106 return retPointer;
00107 #else
00108 return GetProcAddress( dlhandle->hinstLib, symbol );
00109 #endif
00110 }
00111 else
00112 return NULL;
00113 }
00114
00115
00116 int lt_dlmakeresident (lt_dlhandle handle)
00117 {
00118 return 0;
00119 }