Ich wusste nicht welchen Titel ich nehmen soll weil ich nicht genau weis was mein Problem ist. Ich habe einen Code in C um eine Dll Datei dynamisch zu laden.
#ifdef _WIN32
#include <windows.h>
typedef HANDLE lib_t;
#else
#include <dlfcn.h>
typedef void* lib_t;
#endif
lib_t MyLoadLib(const char* lib) {
#ifdef _WIN32
return LoadLibraryA(lib);
#else
return dlopen(lib, RTLD_LAZY);
#endif
}
void MyUnloadLib(lib_t lib) {
#ifdef _WIN32
FreeLibrary(lib);
#else
dlclose(lib);
#endif
}
void* MyLoadProc(lib_t lib, const char* proc) {
#ifdef _WIN32
return GetProcAddress(lib, proc);
#else
return dlsym(lib, proc);
#endif
}
Ich wollte diesen Code in ein Programm von mir (in C++ geschrieben) übernehmen weil ich dachte G++ kann ja auch C kompilieren. Aber dabei kommt
main.cpp: In function 'void MyUnloadLib(lib_t)':
main.cpp:42:20: error: invalid conversion from 'lib_t {aka void*}' to 'HMODULE {aka HINSTANCE__*}' [-fpermissive]
FreeLibrary(lib);
^
In file included from c:\mingw\include\windows.h:44:0,
from main.cpp:6:
c:\mingw\include\winbase.h:1624:24: note: initializing argument 1 of 'BOOL FreeLibrary(HMODULE)'
WINBASEAPI BOOL WINAPI FreeLibrary (HMODULE);
^~~~~~~~~~~
main.cpp: In function 'void* MyLoadProc(lib_t, const char*)':
main.cpp:50:36: error: invalid conversion from 'lib_t {aka void*}' to 'HINSTANCE {aka HINSTANCE__*}' [-fpermissive]
return GetProcAddress(lib, proc);
^
In file included from c:\mingw\include\windows.h:44:0,
from main.cpp:6:
c:\mingw\include\winbase.h:1818:27: note: initializing argument 1 of 'int (__attribute__((__stdcall__)) * GetProcAddress(HINSTANCE, LPCSTR))()'
WINBASEAPI FARPROC WINAPI GetProcAddress (HINSTANCE, LPCSTR);
^~~~~~~~~~~~~~
main.cpp:50:26: error: invalid conversion from 'FARPROC {aka int (__attribute__((__stdcall__)) *)()}' to 'void*' [-fpermissive]
return GetProcAddress(lib, proc);
~~~~~~~~~~~~~~^~~~~~~~~~~
Wie kann ich diesen Code in mein C++ Programm implementieren?