cha*_*ian 2 c++ windows command-line-interface visual-studio-2010
我正在开发一个相当复杂的项目,在该项目中我正在使用 C++/CLI 的项目访问用普通旧式 C++ 编写的类。它是一个 Windows 窗体 GUI 项目,使用许多与其(非 CLI)C++ 姐妹项目相同的功能。
在我试图调整以在两种环境中工作的一门课程中,我使用此功能轮询按键:
inline bool IsKeyDown(unsigned char ch) const {
return (GetAsyncKeyState(ch) & (1u << 15)) != 0;
}
Run Code Online (Sandbox Code Playgroud)
我同时收到“无法解析的令牌”和“无法解析的外部符号”错误
"extern "C" short __stdcall GetAsyncKeyState(int)" (?GetAsyncKeyState@@$$J14YGFH@Z) referenced in function "public: bool __clrcall Engine::InputManager::IsKeyDown(unsigned char)const " (?IsKeyDown@InputManager@Engine@@$$FQBM_NE@Z)
显然,这个问题与 CLI 友好的实现有关,GetAsyncKeyState()但我不确定需要做什么不同。谁能指导我如何解决这个问题?该函数在我的非 CLI 环境中正常运行(并且已经运行了几个月)。我对 CLI 东西非常陌生,所以任何帮助都会很棒,而且任何帮助都不会太具体。
如果有帮助,我正在使用 Visual Studio 2010 并使用/clr参数(not:pure或:safe)进行编译。
MSDN库提供了任何特定函数需要包含哪些头文件和库的详细信息。
在这种情况下,您需要 windows.h(您必须已经拥有)和 user32.lib(可能缺少)。所以添加
#pragma comment(lib, "user32.lib")
Run Code Online (Sandbox Code Playgroud)
在代码的顶部,一切都应该很好。或者,您可以将 user32.lib 添加到项目属性页面中的库列表中,记住为每个配置(例如调试和发布)执行此操作。
| 归档时间: |
|
| 查看次数: |
3836 次 |
| 最近记录: |