Jest! Jest! Jest! :D Kto by pomyślał, że tyle czasu zmarnuję, żeby stworzyć sam szkielet wtyczki poprawnie kompilujący się pod Code::Blocks... Rozwiązanie:
Krok 1: Kod
#define UNICODE
#define _UNICODE
#include <windows.h>
#include <wtwPlugin.h>
WTWPLUGINFO plugInfo = {
sizeof(WTWPLUGINFO),
L"wtw_basic_plugin",
L"Podstawowa struktura wtyczki",
L"(c) 2009",
L"Marcin Lewicz (Dziaddu)",
L"dziaddu2@tlen.pl",
L"dziaddu.eportal.com.pl",
L"",
PLUGIN_API_VERSION,
MAKE_QWORD_VERSION(0, 1, 0, 0),
WTW_CLASS_UTILITY,
NULL,
0,
0,
0,
0
};
extern "C" __declspec(dllexport) WTWPLUGINFO * _stdcall queryPlugInfo(DWORD apiVersion, DWORD masterVersion);
extern "C" __declspec(dllexport) int _stdcall pluginLoad(DWORD callReason, WTWFUNCTIONS *fC);
extern "C" __declspec(dllexport) int _stdcall pluginUnload(DWORD callReason);
__declspec(dllexport) WTWPLUGINFO * _stdcall queryPlugInfo(DWORD apiVersion, DWORD masterVersion)
{
return &plugInfo;
}
__declspec(dllexport) int _stdcall pluginLoad(DWORD callReason, WTWFUNCTIONS *fC)
{
return 0;
}
__declspec(dllexport) int _stdcall pluginUnload(DWORD callReason)
{
return 0;
}
Czym różni się od wcześniejszych prób? stdcall ma
pojedynczy podkreślnik. Przed chwilą to wykombinowałem :]
Krok 2: Menu Project -> Build options... -> zakładka Linker settings -> pole Other linker options -> -Wl,--kill-at
Co to robi? Coś takiego (taka będzie zawartość pliku def, jeśli zaznaczymy, że ma się generować automatycznie):
EXPORTS
pluginLoad = pluginLoad@8 @1
pluginUnload = pluginUnload@4 @2
queryPlugInfo = queryPlugInfo@8 @3
Gdybym od razu zaczął od kombinowania z inną ilością podkreślników przed stdcall, oszczędziłbym ze 4h męczarni, bo --kill-at wygooglałem sobie dosyć szybko, ale nie działał z __stdcall.