有条件地在加载时链接到符号

时间:2015-05-19 18:17:10

标签: c++ winapi dll

我希望为Windows 7或8安装一个Win32程序。我希望能够在Windows 8上支持触摸注入。InitializeTouchInjection是初始化它的符号,但仅在Windows中可用8.有没有办法在加载时或运行时检查Windows版本和此符号的链接?目前,在Windows 7中加载时,我得到了未定义的链接。

1 个答案:

答案 0 :(得分:0)

使用GetProcAddress允许代码检查符号是否退出,如果没有,则提供备用行为。在这种情况下,触摸注入仅在窗口8中。

typedef BOOL(WINAPI *InitTouch) (_In_ UINT32 maxCount, _In_ DWORD dwMode);

InitTouch fp =  (InitTouch)GetProcAddress(GetModuleHandle(TEXT("User32.dll")),                               
                                  "InitializeTouchInjection");
if ((fp != NULL) && fp(TOUCH_LIMIT, TOUCH_FEEDBACK_DEFAULT))
{
    // Behavio(u)r with the feature
}
else
{
    // Behavio(u)r without the feature
}