Я хочу загрузить функции Win32 API, используя Runtime.loadLibrary
и GetProcAddress(...)
.Используя mixin
:
template GetProcA(alias func, alias name_in_DLL)
{
const char[] GetProcA = func ~ ` = cast(typeof(`~func~`)) GetProcAddress(hModule,"`~name_in_DLL~`");`;
}
...
static extern (Windows) Object function (HWND hWnd, int nIndex) GetWindowLong;
static extern (Windows) Object function (HWND hWnd, int nIndex, Object dwNewLong) SetWindowLong;
Я могу создать его экземпляр (в конструкторе классов) следующим образом:
mixin GetProcA!("SetWindowLong", "SetWindowLongA");
, но если использовать его снова для другой функции:
mixin GetProcA!("GetWindowLong", "GetWindowLongA");
компилятор жалуется:
mixin GetProcA!("GetWindowLong","GetWindowLongA") GetProcA isn't a template...
Я не вижу смысла: если первое создание создало GetProcA
, и я не могу использовать его снова, так как это поможет мне здесь?