none
vc2010 请问我错在哪....... RRS feed

  • 问题

  • #include <Windows.h>
    
    
    
    	private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) 
    
    			 {
    
    				 ::keybd_event(65,::MapVirtualKey(65,0),0,0);
    
    			 }
    
    

     

     

     

    1>------ 已启动生成: 项目: Key, 配置: Debug Win32 ------
    1>生成启动时间为 2010/9/25 20:12:14。
    1>InitializeBuildStatus:
    1>  正在对“Debug\Key.unsuccessfulbuild”执行 Touch 任务。
    1>GenerateTargetFrameworkMonikerAttribute:
    1>正在跳过目标“GenerateTargetFrameworkMonikerAttribute”,因为所有输出文件相对于输入文件而言都是最新的。
    1>ClCompile:
    1>  所有输出均为最新。
    1>  Key.cpp
    1>  所有输出均为最新。
    1>CoreResGen:
    1>  正在将资源文件“Form1.resX”处理到“Debug\Key.Form1.resources”中。
    1>ResourceCompile:
    1>  所有输出均为最新。
    1>Key.obj : error LNK2028: 无法解析的标记(0A000011) "extern "C" unsigned int __stdcall MapVirtualKeyW(unsigned int,unsigned int)" (?MapVirtualKeyW@@$$J18YGIII@Z),该标记在函数 "private: void __clrcall Key::Form1::button1_Click(class System::Object ^,class System::EventArgs ^)" (?button1_Click@Form1@Key@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z) 中被引用
    1>Key.obj : error LNK2028: 无法解析的标记(0A000012) "extern "C" void __stdcall keybd_event(unsigned char,unsigned char,unsigned long,unsigned long)" (?keybd_event@@$$J216YGXEEKK@Z),该标记在函数 "private: void __clrcall Key::Form1::button1_Click(class System::Object ^,class System::EventArgs ^)" (?button1_Click@Form1@Key@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z) 中被引用
    1>Key.obj : error LNK2019: 无法解析的外部符号 "extern "C" void __stdcall keybd_event(unsigned char,unsigned char,unsigned long,unsigned long)" (?keybd_event@@$$J216YGXEEKK@Z),该符号在函数 "private: void __clrcall Key::Form1::button1_Click(class System::Object ^,class System::EventArgs ^)" (?button1_Click@Form1@Key@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z) 中被引用
    1>Key.obj : error LNK2019: 无法解析的外部符号 "extern "C" unsigned int __stdcall MapVirtualKeyW(unsigned int,unsigned int)" (?MapVirtualKeyW@@$$J18YGIII@Z),该符号在函数 "private: void __clrcall Key::Form1::button1_Click(class System::Object ^,class System::EventArgs ^)" (?button1_Click@Form1@Key@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z) 中被引用
    1>c:\users\mobin\documents\visual studio 2010\Projects\Key\Debug\Key.exe : fatal error LNK1120: 4 个无法解析的外部命令
    1>
    1>生成失败。
    1>
    1>已用时间 00:00:02.29
    ========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========

     

     

    只想调用一下API,搞了半天都没成功,无语了.

    2010年9月25日 12:13

答案

  • 托管项目默认没有链接Windows SDK的库。你可以在链接选项中把这些库加上。

    至于应该加哪些库,可以查找报链接错误的函数的SDK文档。

    keybd_event已经过时,新的代码应该用SendInput。



    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    • 已标记为答案 Ballsky 2010年9月25日 17:44
    2010年9月25日 14:38
    版主