Я пытаюсь скомпилировать небольшую программу, используя компилятор minGw с кодом :: Blocks. Моя программа выглядит следующим образом:CodeBlock undefined ссылка на функцию Windows API, даже если каталог поиска настроен
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
int main()
{
HWND hwnd = FindWindowA(NULL, "A Valid Window Title");
printf("Window Handle=%X\n", hwnd);
DWORD pid = 0;
GetWindowThreadProcessId(hwnd, &pid);
printf("PID=%d\n", pid);
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, 0, pid);
printf("Process HANLDE=%X\n", hProcess);
GetProcessId(hProcess);
CloseHandle(hProcess);
return 0;
}
Однако, Code :: Blocks дает undefined reference to GetProcessId
ошибку при попытке компиляции. Если я удалю вызов GetProcessId
, программа компилируется и запускается нормально. Я думал, что это сообщение об ошибке вызвано неправильным поиском. Поэтому я пошел в свои настройки и добавил
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include
C:\Program Files (x86)\Windows Kits\8.1\Include\shared
C:\Program Files (x86)\Windows Kits\8.1\Include\um
В мой каталог поиска. Но на этот раз Code :: Blocks дает еще большую ошибку. Возможно, моя вторая мысль была вызвана некоторой ошибкой связи. Поэтому я пошел в свою настройку и явно добавил Kernel32.lib
и User32.lib
в свой проект. Такая же ошибка сохраняется. Что смущает меня больше, когда я типа GetProcessId
, предложение действительно приходит и показывает, что существует функция с именем GetProcessId
чем причина такой проблемы и как решить эту проблему?
Поиск путь не имеет ничего общего с ним. Вы должны связать правильные библиотеки. –