Вот настройка прямо сейчас в 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
и я могу использовать функции оттуда без проблем, поэтому я знаю, что библиотека не может быть разбита.
Вам нужно исправить свой C-путь include в testapp.that будет исправлять вашу проблему с включением. Обратите внимание, что включенные пути относятся к корню проекта (файл.vcxproj), а не к файлам cpp.
После этого вам также нужно связать testapp с testlib - самый простой способ сделать это - добавить ссылку anoroject на testlib. Перейдите к свойствам testapp, разверните первый вариант в левом дереве и добавьте ссылку. Если вам нужно подключиться к pll.lib, и это звучит так, как у вас, добавьте это в вкладку компоновщика testapp.
Вы также должны знать, является ли управление памятью pll.lib герметичным или нет. Если вам нужно удалить mem, выделенный в pll.lib, вы должны сгенерировать код, динамически связанный с той же версией CRT, с которой был скомпилирован pll.lib.
поместите все файлы, о которых вы говорите, в ту же папку, что и файл проекта, и попробуйте использовать;
#include "pll.h"
вместо;
#include <pll.h>