Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> _GetProcessMemoryInfo@12, Вылетает ошибка линковки 
V
    Опции темы
lexus1234567
Дата 20.11.2012, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 26.7.2012

Репутация: нет
Всего: нет



Здравствуйте! Пытаюсь написать программу, которая считывала бы память о каком либо процессе. Использую функцию GetProcessMemoryInfo из библиотеки psapi.h. Но при компиляции вылетает ошибка линковки:
1>WorkInfo.obj : error LNK2001: неразрешенный внешний символ "_GetProcessMemoryInfo@12"
1>C:\Documents and Settings\777\Мои документы\Visual Studio 2010\Projects\ProcessInfo_new\Release\ProcessInfo.exe : fatal error LNK1120: 1 неразрешенных внешних элементов
Странно еще то, что у меня есть старая версия программы, в которой этой ошибки нет, а код один и тот же. Может что то с настройками проекта?

Вот код файла WorkInfo.cpp (этот файл содержит в себе класс для работы с данными):
Код

#include <Psapi.h>
#pragma comment(lib, "psapi.lib")

...
if(m_sNameProc == pe32.szExeFile)
      {
          hProcess = OpenProcess( PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID );
         
PROCESS_MEMORY_COUNTERS pmc;
if ( GetProcessMemoryInfo( hProcess, &pmc, sizeof(pmc)) )
              m_sMemInfo.Format(_T("%d байт"), pmc.WorkingSetSize);

PM MAIL   Вверх
volatile
Дата 20.11.2012, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 13
Всего: 85



линкер не может найти psapi.lib
1.проверьте путя
2.попробуйте переключить динам.<=>стат. линковка
3.очистите папку релиз/дебаг, пересоберите проект.

PM MAIL   Вверх
Dem_max
Дата 21.11.2012, 04:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 16
Всего: 39



Все гораздо проще если внимательно читать MSDN

http://msdn.microsoft.com/ru-ru/library/wi...9(v=vs.85).aspx

http://msdn.microsoft.com/ru-ru/library/wi...0(v=vs.85).aspx

Это сообщение отредактировал(а) Dem_max - 21.11.2012, 04:10

Присоединённый файл ( Кол-во скачиваний: 30 )
Присоединённый файл  psapi.png 16,62 Kb


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
lexus1234567
Дата 21.11.2012, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 26.7.2012

Репутация: нет
Всего: нет



Цитата(Dem_max @ 21.11.2012,  04:04)
Все гораздо проще если внимательно читать MSDN

http://msdn.microsoft.com/ru-ru/library/wi...9(v=vs.85).aspx

http://msdn.microsoft.com/ru-ru/library/wi...0(v=vs.85).aspx

Я читал эту статью в MSDN несколько раз, да и как в примере сказано: "add Psapi.lib to TARGETLIBS". Вот я и добавил эту либу. Только я не знаю что такое TARGETLIBS. И может надо еще dll подключить? Вы это имели ввиду?
PM MAIL   Вверх
feodorv
Дата 21.11.2012, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 9
Всего: 45



Наверное, Dem_max имел в виду:
Цитата

...and compile the program with -DPSAPI_VERSION=1



--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
lexus1234567
Дата 21.11.2012, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 26.7.2012

Репутация: нет
Всего: нет



Цитата(feodorv @ 21.11.2012,  16:37)
Наверное, Dem_max имел в виду:
Цитата

...and compile the program with -DPSAPI_VERSION=1

А как это сделать? Я пробовал это запихнуть в командную строку проекта, но мне тогда выдает компилятор ошибку. Куда деть эту строчку?
PM MAIL   Вверх
volatile
Дата 21.11.2012, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 13
Всего: 85



Цитата(lexus1234567 @  21.11.2012,  16:55 Найти цитируемый пост)
 -DPSAPI_VERSION=1

это просто дефайн, из коммандной строки.
тоже самое будет, если перед "#include psapi.h" поместить
#define PSAPI_VERSION 1

PM MAIL   Вверх
Dem_max
Дата 21.11.2012, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 16
Всего: 39



Внимательно читаем что написано на картинке


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
lexus1234567
Дата 21.11.2012, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 26.7.2012

Репутация: нет
Всего: нет



Цитата(Dem_max @ 21.11.2012,  18:23)
Внимательно читаем что написано на картинке

Мне более внимательное чтение msdn ничего не даст. Все равно больше того, что я уже понял я не пойму. Так что если можете помочь, помогите, пожалуйста!
PM MAIL   Вверх
lexus1234567
Дата 22.11.2012, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 26.7.2012

Репутация: нет
Всего: нет



Решено! Подключил dll и использовал от туда функцию. Всем спасибо большое за помощь!!!
PM MAIL   Вверх
Dem_max
Дата 19.12.2012, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 16
Всего: 39



Добавлю еще, 
если для RAD2010 стоит #define PSAPI_VERSION 1, это все равно не поможет, линкер будет линковать к kernel32.dll

Поможет только динамическая загрузка psapi.dll и вызов функции.


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0499 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.