none
VS 2010. Ошибки в файле "psapi.lib" RRS feed

  • Вопрос

  • Файл "Psapi.lib" достаю из D:\Program Files\Microsoft SDKs\Windows\v7.0A\Lib
    При компиляции 22 ошибки, все относятся к "Psapi.lib".
    Что не так?

    // TM.cpp: главный файл проекта.
    
    #include "stdafx.h"
    #include "Form1.h"
    #include "windows.h"
    #include <Psapi.h>
    #include "Psapi.lib"
    
    using namespace TM;
    
    [STAThreadAttribute]
    int main(array<System::String ^> ^args)
    {
    	// Включение визуальных эффектов Windows XP до создания каких-либо элементов управления
    	Application::EnableVisualStyles();
    	Application::SetCompatibleTextRenderingDefault(false); 
    
    	// Создание главного окна и его запуск
    	Application::Run(gcnew Form1());
    
    	DWORD lpidProcess[1024];
    	DWORD cbNeeded;
    	EnumProcesses(lpidProcess, 1024, &cbNeeded);
    
    	return 0;
    }

    Ошибка 1 error C2059: синтаксическая ошибка: < d:\users\host\documents\visual studio 2010\projects\tm\Psapi.lib 1 1 TM
    Ошибка 3 error C2018: неизвестный знак "0xe" d:\users\host\documents\visual studio 2010\projects\tm\Psapi.lib 3 1 TM
    Ошибка 2 error C2018: неизвестный знак "0x60" d:\users\host\documents\visual studio 2010\projects\tm\Psapi.lib 2 1 TM
    Ошибка 14 error C2018: неизвестный знак "0x19" d:\users\host\documents\visual studio 2010\projects\tm\Psapi.lib 3 1 TM
    ...
    и т.д.

Ответы

  • Не надо делать:
    #include "Psapi.lib"
    Файл Psapi.lib просто должен находится с одном из пути поиска библиотек, и компилятор его сам найдёт.
    • Помечено в качестве ответа Vendicare 30 мая 2013 г. 18:09
  • Нашёл решение: Свойства проекта -> Компоновщик -> Ввод -> Добавить в дополнительные зависимости: psapi.lib 
    • Помечено в качестве ответа Vendicare 30 мая 2013 г. 18:09

Все ответы

  • Не надо делать:
    #include "Psapi.lib"
    Файл Psapi.lib просто должен находится с одном из пути поиска библиотек, и компилятор его сам найдёт.
    • Помечено в качестве ответа Vendicare 30 мая 2013 г. 18:09
  • Файл Psapi.lib просто должен находится с одном из пути поиска библиотек, и компилятор его сам найдёт.
    Т.е. "Psapi.lib" переместить в папку "include"?
  • Обычно папка библиотек называется "lib", а папка "include" используется для заголовочных файлов.
  • Сделал. Скопировал "Psapi.lib" и "Psapi.h" из D:\Program Files\Microsoft SDKs\Windows\v7.0A в D:\Program Files\Microsoft Visual Studio 10.0\VC в "lib" и "include" соответственно. И закомментировал строку:

    #include "Psapi.lib"

    Но студия выдаёт:

    Ошибка 1 error LNK2028: ссылка на неразрешенную лексему (0A00000E) "extern "C" int __stdcall EnumProcesses(unsigned long *,unsigned long,unsigned long *)" (?EnumProcesses@@$$J212YGHPAKK0@Z) в функции "int __clrcall main(cli::array<class System::String ^ >^)" (?main@@$$HYMHP$01AP$AAVString@System@@@Z) D:\Users\Host\documents\visual studio 2010\Projects\TM\TM.obj TM

    Ошибка 2 error LNK2019: ссылка на неразрешенный внешний символ "extern "C" int __stdcall EnumProcesses(unsigned long *,unsigned long,unsigned long *)" (?EnumProcesses@@$$J212YGHPAKK0@Z) в функции "int __clrcall main(cli::array<class System::String ^ >^)" (?main@@$$HYMHP$01AP$AAVString@System@@@Z) D:\Users\Host\documents\visual studio 2010\Projects\TM\TM.obj TM

    На том же, по сути коде:

    // TM.cpp: главный файл проекта.
    
    #include "stdafx.h"
    #include "Form1.h"
    #include "windows.h"
    #include <Psapi.h>
    //#include "Psapi.lib"
    
    using namespace TM;
    
    [STAThreadAttribute]
    int main(array<System::String ^> ^args)
    {
    	// Включение визуальных эффектов Windows XP до создания каких-либо элементов управления
    	Application::EnableVisualStyles();
    	Application::SetCompatibleTextRenderingDefault(false); 
    
    	// Создание главного окна и его запуск
    	Application::Run(gcnew Form1());
    
    	DWORD lpidProcess[1024];
    	DWORD cbNeeded;
    	EnumProcesses(lpidProcess, 1024, &cbNeeded);
    
    	return 0;
    }


    • Изменено Vendicare 30 мая 2013 г. 15:40 уточнение
  • Попробуйте явно добавить путь к Psapi.lib в список путей поиска библиотек проекта (http://msdn.microsoft.com/ru-ru/library/ee855621(v=vs.100).aspx)
  • Там те же пути макросами прописаны, и к SDKs\Windows\v7.0A\lib и к VC\lib. Я добавил вручную пути (уже не макросами), перестроил проект - результат всё тот же.
  • Нашёл решение: Свойства проекта -> Компоновщик -> Ввод -> Добавить в дополнительные зависимости: psapi.lib 
    • Помечено в качестве ответа Vendicare 30 мая 2013 г. 18:09