00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include <stdio.h>
00025 #include <dlfcn.h>
00026 #include <stdlib.h>
00027
00031 void PressAKey()
00032 {
00033 fflush(stdout);
00034 getchar();
00035 }
00040 int DisplayErrorMessage()
00041 {
00042
00043 const char *q = dlerror();
00044
00045
00046 printf("%s",q);
00047 PressAKey();
00048
00049
00050 return EXIT_FAILURE;
00051 }
00052
00053 int main()
00054 {
00055 int result;
00056
00057
00058 void* handleToDll;
00059
00060 typedef void (*PrintHelloWorldFunction)(void);
00061 PrintHelloWorldFunction PrintHelloWorld;
00062
00063
00064 char dllFileName[] = "helloworlddllexample.dll";
00065
00071 handleToDll = dlopen(dllFileName, RTLD_LAZY);
00072
00073
00074 if (!handleToDll)
00075 {
00076 DisplayErrorMessage();
00077 }
00078
00079
00080 printf(" Press enter key to step through the example application\n");
00081 PressAKey();
00082
00088 PrintHelloWorld = (PrintHelloWorldFunction)dlsym(handleToDll, "PrintHelloWorld");
00089
00090
00091 if(!PrintHelloWorld)
00092 {
00093 DisplayErrorMessage();
00094 }
00095
00096
00097 PrintHelloWorld();
00098
00105 result= dlclose(handleToDll);
00106
00107
00108 if(result == -1)
00109 {
00110 DisplayErrorMessage();
00111 }
00112
00113
00114 printf(" Press enter key to exit from the example application");
00115 PressAKey();
00116
00117
00118 return EXIT_SUCCESS;
00119 }
00120
00121
00122