Как бы я включил Psapi.h, не сталкиваясь с ошибкой многократного включения?

В настоящее время сталкиваюсь с проблемой, когда Winsock.h уже включен в заголовочный файл в другом месте в моем проекте …

Заголовок, не включенный напрямую:

# if defined(_WINSOCKAPI_) && !defined(_WINSOCK2API_)
# error WinSock.h has already been included
# endif // defined(_WINSOCKAPI_) && !defined(_WINSOCK2API_)

Так что, когда я пытаюсь собрать, я получаю сообщение об ошибке «C1189 Winsock.h уже включен» (из определенного сообщения об ошибке в приведенном выше фрагменте кода).

Тем не менее, я должен быть в состоянии использовать части PSAPI получить информацию об использовании памяти о текущем процессе. Я пытался включить в мой другой файл …

Мой .cpp файл:

#include <Windows.h>
#include <Psapi.h>

SIZE_T getMemoryInfo() {    // The function that needs the includes

PROCESS_MEMORY_COUNTERS pmc;
SIZE_T memoryUsed;

GetProcessMemoryInfo(GetCurrentProcess(), &pmc, sizeof(pmc));
memoryUsed = pmc.WorkingSetSize;

return memoryUsed;

}

После исследования я попытался использовать WIN32_LEAN_AND_MEAN, чтобы попытаться избавиться от файла Winsock.h, который работает, но теперь, когда я пытаюсь использовать PROCESS_MEMORY COUNTERS, я получаю неопределенную ошибку символа …

«Неразрешенный внешний символ LNK2019 GetProcessMemoryInfo, на который есть ссылка в функции …» и «Неразрешенные внешние ссылки LNK1120 1 [в myFile]»

Я ожидаю, что мне нужно выяснить, как включить фактические заголовочные файлы, которые мне нужны, но документы по винде не говорят (а также Википедия говорит, что большинство дочерних заголовков не могут быть включены по отдельности, так что это, вероятно, проблема).

#define WIN32_LEAN_AND_MEAN
#include <Windows.h>    // Windows specific libraries for collecting software metrics.
#include <Psapi.h>

Я пытался выяснить это целый день, любая помощь будет полезна, так как документы по Windows довольно бесполезны, и я очень расстроен. Я прошу прощения, если это глупый вопрос, но я часто борюсь с включениями.

0

Решение

Наконец-то разобрался.

Очевидно, что psapi.lib не был автоматически связан с Visual Studio (несмотря на тот факт, что утилиты Windows …). Вы должны зайти в properties / linker / input и вручную добавить библиотеку в качестве зависимости. Если он не может найти местоположение библиотеки, добавьте каталог вручную в C / C ++ в качестве каталога поиска.

Вы также должны иметь #define WIN32_LEAN_AND_MEAN.

Надеюсь, что это поможет, если кому-то понадобится помощь в будущем, просто прокомментируйте здесь.

Кредит на решение идет на @RbMn и @Scheff, спасибо, ребята!

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]