我想使用Runtime.loadLibrary
和加载 Win32 API 函数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
并且我不能再次使用它,那么它在这里对我有什么帮助?