Я создал визуальное решение Microsoft с двумя проектами консольных приложений. Я могу использовать библиотеку Eigen в одном проекте, просто объявив ее в свойствах следующим образом:
$ (ProjectDir) Эйген \ eigen3;
Я могу использовать библиотечные структуры, такие как «Eigen :: Vector3d» и т.д. без проблем.
Теперь, когда я пытаюсь скопировать только заголовочную библиотеку во вторую папку проекта и пытаюсь установить то же свойство для второй, и использую структуру, я получаю ошибки компиляции.
Затем, когда я не копирую папку Eigen во вторую и просто пытаюсь ссылаться со второй на папку в первой, я получаю другой набор ошибок времени компиляции.
$ (SolutionDir) someproject1 \ Эйген \ eigen3;
Ошибки во втором случае таковы:
c: \ users \ alam syed \ documents \ someproject2.h (11): ошибка C2653:
‘Eigen’: это не имя класса или пространства именC: \ Users \ Алам
syed \ documents \ someproject2.h (11): ошибка C2065: «Vector3f»: не объявлено
идентификаторc: \ users \ alam syed \ documents \ someproject2.h (11): ошибка
C2923: ‘std :: vector’: ‘Vector3f’ не является допустимым аргументом типа шаблона
для параметра ‘_Ty’c: \ users \ alam syed \ documents \ someproject2.h (11):
ошибка C2903: «распределитель»: символ не является ни шаблоном класса, ни
шаблон функцииc: \ users \ alam syed \ documents \ someproject2.h (11):
ошибка C3203: «распределитель»: неиспользуемый шаблон класса не может быть использован
в качестве аргумента шаблона для параметра шаблона _Alloc, ожидается
реальный тип
Почему не нормально, чтобы два проекта в одном решении пытались независимо иметь свои собственные библиотеки в своих папках проектов? Далее, почему я не могу отослать папку Eigen от одного к первому? Наконец, как мы можем обойти эту причудливую / нестандартную проблему?
Я только что проверил это, и это возможно в одном решении.
eigen1
в первой папке проекта и eigen2
во второй папке проекта($ProjectDir)eigen1
как «Дополнительные каталоги включения» в первом проекте и($ProjectDir)eigen2
во втором проектеЭто даже работает, если вы не переименовываете собственные папки.
Я могу думать только о двух причинах, почему вы хотели бы сделать это вместо использования common
каталогный подход:
Других решений пока нет …