FUnckje w DLL
Ostatnio zmodyfikowano 2014-11-13 18:24
Nexicoll Temat założony przez niniejszego użytkownika |
FUnckje w DLL » 2014-11-13 16:39:53 Mam tak oto zadeklarowaną funckję w dll'ce bool DLL_EXPORT CreateFolder(LPCSTR name = "bez nazwy") { CreateDirectory(name, NULL); return true; }
i w pliku nagłówkowym bool DLL_EXPORT CreateFolder(LPCSTR name);
Chcąc zrobić tak FARPROC CreateFolder = GetProcAddress(hDll, "CreateFolder");
funckja da się wywołać, ale na jaki sposób bym nie próbował to przy próbie dania jej argumentu (LPCSTR name) za każdym razem wywala mi błąd że funkcja posiada zbyt dużą ilość argumentów :( (Code::Blocks) |
|
Monika90 |
» 2014-11-13 17:40:21 FARPROC to wskaźnik do funkcji nie przyjmującej żadnych argumentów, wartość zwróconą przez GetProcAddress należy rzutować na właściwy typ. const auto CreateFolder = reinterpret_cast < bool( * )( const char * ) >( GetProcAddress( hDll, "CreateFolder" ) );
|
|
Nexicoll Temat założony przez niniejszego użytkownika |
» 2014-11-13 18:07:12 "auto" changes meaning in C++11 -_- btw. deklarując np. bool CreateFolder = (reinterpret_cast < bool( * )( const char * ) > (GetProcAddress(hDll, "CreateFolder"))); lub bool CreateFolder = (GetProcAddress(hDll, "CreateFolder"); po późniejszym użycia otrzymuję błąd, że CreateFolder nie może być użyte jako funkcja :( |
|
Monika90 |
» 2014-11-13 18:18:24 Co ty za kompilatora używasz że nie działa w nim auto? Może zapomniałeś użyć -std=c++11 Jeżeli naprawdę masz tak przestarzały kompilator to zrób tak typedef bool( * PCreateFolder )( const char * ); const PCreateFolder CreateFolder = reinterpret_cast < PCreateFolder >( GetProcAddress( hDll, "CreateFolder" ) );
i w pliku nagłówkowym
bool DLL_EXPORT CreateFolder(LPCSTR name);
|
Po co to w pliku nagłówkowym, jeżeli ładujesz funkcję za pomocą GetProcAddress? |
|
Nexicoll Temat założony przez niniejszego użytkownika |
» 2014-11-13 18:24:28 Pięknie działa. Dziękuję :) |
|
« 1 » |