0

我需要使用旧编译器下的 RawInput api 调用,它是 pre xp (特别是 borland 5.5 - 不要告诉我使用其他编译器这是不可能的,我需要使用它)

Ist 头文件 winuser.h 和 user32.lib 不包含原始输入调用,其他编译器的头文件和 user32.lib 不包含。那么使用这样的外部 rawinput .h 定义并将其链接到最新的 user32.lib 是可以实现的吗?

我在链接器方面没有太多经验。定义编译但我在链接处确实有未解决的外部问题

错误:未解析的外部 '__stdcall GetRawInputDeviceList (tagRAWINPUTDEVICELIST *, unsigned int *, unsigned int)' 引用自 C \CODE2\PROGRAM\MAIN.OBJ

错误:从 C:\CODE2\PROGRAM\MAIN.OBJ 引用的未解析的外部 '__stdcall RegisterRawInputDevices(const tagRAWINPUTDEVICE *, unsigned int, unsigned int)'

用新的 user32.lib 替换旧的 user32.lib 似乎没有效果(即使重命名它似乎也没有效果,而且编译器似乎根本没有触及 user32.lib (?)

如何让它工作,很多 tnx 建议如何解决这个问题(而不是告诉我我需要更新的编译器,我需要用这个旧的编译器来做)

(火)

// 编辑:修正了我的错误 winuser.lib 到 user32.lib(我的意思是 user32.lib)

4

2 回答 2

1

GetRawInputDeviceList并且RegisterRawInputDevices都在 user32.lib 中而不是 winuser.lib

http://msdn.microsoft.com/en-us/library/windows/desktop/ms645598(v=vs.85).aspx

http://msdn.microsoft.com/en-us/library/windows/desktop/ms645600(v=vs.85).aspx

those pages also state that you only need to include windows.h (and not winuser.h)

于 2012-05-29T11:41:14.257 回答
1

When you need to call APIs which do exist on some Windows platforms and not on other ones, then you must NOT bind to the associated LIB statically but dynamically (using LoadLibrary and GetProcAddress). Another mechanism would be to use Delay-loaded Libraries.

于 2012-05-29T12:01:43.960 回答