plik.h
typedef void (*RYSUJPROC)();
class TKlasa
{
private:
HINSTANCE hDll;
RYSUJPROC pluginrysuj;
public:
...
};
plik.cpp (w jakiejs funkcji z klasy TKlasa)
hDll = LoadLibrary(nazwa);
if(hDll)
{
plugininit = (INITPROC)GetProcAddress(hDll, "Rysuj");
if (plugininit)
MessageBoxA(NULL,"udalo sie wczytac","dll",MB_OK);
...
dll.cpp
#include "pluginAPI.h"
// w tym pliku najwazniejsze rzeczy to:
// #define DLLEXPORT __declspec(dllexport)
// #include <vector>
// #include <Graphics.hpp>
extern "C"
{
DLLEXPORT void Rysuj();
}
void Rysuj()
{
//costam
}
#pragma argsused
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
return 1;
}
z niewiadomych dla mnie przyczyn to nie działa (wiadomość nie wyświetla się)... gdzie tu jest błąd?
EDIT:
Przed chwilą z ciekawości zajrzałem do tego 7kb-towego dlla i zobaczyłem, że nazwy tych funkcji po eksporcie zaczynają się od "_". Po zmienieniu nazwy przy imporcie zaczęło działać... Dlaczego ten dolnik tam jest? skąd on się wziął?
EDIT:
Dobra, w końcu sobie poradziłem. W opcjach kompilatora jest opcja "Generate underscores" (po cholere ona jest to ja nie wiem). Sorry za spam. Nie kasuje tematu, bo może się kiedyś komu przyda.