Включение библиотеки не сработает

0

Вот настройка прямо сейчас в VS2013:

  • Проект pll.lib - не написанный мной, часть большого решения, это чистый C

  • Проект testlib.lib - сделанный мной, в значительной степени работа с копией /pll.lib из инструмента .exe, включает pll.lib, и это чистый C

  • Проект testapp.exe - написанный мной, просто консольное приложение для тестирования, c++ testapp включает testlib.h, без проблем.

  • testlib включает в себя pll.h, также C/c++->additional include directories содержит $(SolutionDir)\pll\include, не указаны библиотеки компоновщиков (как и средство .exe и другие проекты, которые используют библиотеку pll в этом решении), Я также поставил галочку в соответствующем месте в менеджере зависимостей решения.

Когда я начинаю писать #include, он предлагает автозаполнение pll.h как и ожидалось, однако, когда я пытаюсь скомпилировать testapp, он говорит

Cannot include file "pll.h" no such file or directory

Я не понимаю, почему это не будет работать?

Также на дополнительном примечании: testapp также включает другую библиотеку libgen которая также включает pll.h и я могу использовать функции оттуда без проблем, поэтому я знаю, что библиотека не может быть разбита.

  • 2
    Некоторые параметры в VS могут быть установлены независимо для сборок Debug и Release. Возможно, вы добавили каталоги включения для одного, но не для другого.
  • 0
    хм да, конфигурация для отладки только сейчас, но я также встраивать в отладку
Теги:
visual-studio

2 ответа

0

Вам нужно исправить свой C-путь include в testapp.that будет исправлять вашу проблему с включением. Обратите внимание, что включенные пути относятся к корню проекта (файл.vcxproj), а не к файлам cpp.

После этого вам также нужно связать testapp с testlib - самый простой способ сделать это - добавить ссылку anoroject на testlib. Перейдите к свойствам testapp, разверните первый вариант в левом дереве и добавьте ссылку. Если вам нужно подключиться к pll.lib, и это звучит так, как у вас, добавьте это в вкладку компоновщика testapp.

Вы также должны знать, является ли управление памятью pll.lib герметичным или нет. Если вам нужно удалить mem, выделенный в pll.lib, вы должны сгенерировать код, динамически связанный с той же версией CRT, с которой был скомпилирован pll.lib.

0

поместите все файлы, о которых вы говорите, в ту же папку, что и файл проекта, и попробуйте использовать;

#include "pll.h"

вместо;

#include <pll.h>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню