2016-11-23 4 views
0

У меня есть проект, в который я добавил проект gtest, а затем превратил исходный проект в проект .lib и назвал его функцией main() из третьего, нового проекта. Таким образом, я могу построить test .exe с проектом .exe. Кроме того, он не работает.Ссылка на проект проекта Gtest для другого исполняемого файла

Эти шаги, я затем, как упоминалось here
Создать или открыть проект, а затем создать тестовый проект консольного приложения Win32 для него.
Щелкните правой кнопкой мыши тестовый проект, перейдите к свойствам и настройте Configuration для отладки.
Перейти к Свойства конфигурации > C/C++ > Общие > Additional Include Directories и добавьте GTEST включает в себя папку.
В генерации кода > Runtime Library, выберите MDt или MTd; независимо от того, что используется тестируемым проектом.
Под Linker > Общие сведения > Дополнительные каталоги библиотек, добавьте ссылку на папку с gtestd.lib.
Под вход > Дополнительные зависимости, добавьте gtestd.lib.
правой кнопкой мыши тестовый проект, перейдите к свойствам, и установить настройки для освобождения, а затем выполните шаги 3 и 4.
Под Linker > Общие > Дополнительная библиотека каталогов, добавьте ссылку в папку с gtest.lib ,
Под вход > Дополнительные зависимости, добавьте gtest.lib.

Этих шагов я последовавшие за связывающих тестового проекта, как уже упоминалось here
правой кнопки мыши тестовый проекта, перейдите на строительство зависимостей > зависимостей проекта, а также добавить проект для тестирования.
Перейти к свойствам > C/C++ > Общие > Additional Include Directories и включают в себя заголовки из проекта для тестирования.
Под Linker > вход > Дополнительные зависимости, введите файл .lib проекта

Здесь проблема
По какой-то причине, тестовый проект на удивление работает, но только в выпуске Режим. Проект оболочки не работает в любом режиме, несмотря на те же настройки, что и тестовый проект. Я рассмотрел 20 возможных решений и еще не нашел их. Я также пробовал __declspec (dllexport) перед каждым методом в проекте библиотеки, но это не делает справедливости. VS сражается со мной зубным и ногтевым.

Другой материал, который я пытался
Я не хочу, чтобы изменить проект, чтобы построить .LIB каждый раз, когда мне нужно проверить. Поэтому я задумал создать и .exe и .lib из проекта с использованием события сборки pre-link, но он, кажется, принимает только консольные команды, и я не мог понять, как подключить полученный .lib-файл из команд консоли, которые я получил от другого ответа SO.

Вот текущий .sln-файл с этими проблемами. URL-адреса являются абсолютными: https://drive.google.com/file/d/0B6r81tGW7hODeXNpR3ROc3hYMWc/view?usp=sharing

Как просто создать проект проекта и проект оболочки для запуска обычного проекта (который работает как в режиме отладки, так и в режиме выпуска)?

+0

Я прошу нормальный проект как .lib, тестовый проект и оболочку для запуска проекта .lib. Нет блогов или документации, которые выполняют все три очка, поэтому я пополнял советы из других областей, но это не работает. Какие сообщения говорят, что я должен делать (компоновщик -> include libraries, C++ -> General -> add include headers here), по-видимому, недостаточен. Я настроен для режима отладки и выпуска. Теперь мне интересно, просто ли люди притворяются, что это работает; это сложно. Кстати, я возьму рабочий файл .sln в этот момент без жалобы или дальнейшего вопроса. – person27

+0

Каждый ресурс, который я перечислял, и подобные вопросы были на Stack Overflow, поэтому я не думал о том, подходит ли это сайту или нет. С другой стороны, я не могу сказать, что это было бы хорошо в суперпользователе, если они не хотели бы обсуждать конфигурацию проекта, поэтому я не знаю, будет ли миграция полезна. То, что я знаю, это то, что, если на него на это назовут, кто-то это по достоинству оценят :) В моем опыте есть критический недостаток рабочих примеров gtest. – person27

ответ

1

Исправления:

  1. В SimpleCalc (отладка), изменение Project | Properties | General | Configuration type к Static Library. Вот почему релиз работал, но Debug этого не делал.
  2. Для SimpleCalcWrapper выберите Project | Add reference... и добавьте SimpleCalc. Вот почему SimpleCalcWrapper не работает.
  3. Для SimpleCalcTest (выпуск), сброс до значения по умолчанию Project | Properties | Linker | Advanced | Import Library или SimpleCalcTest.exe не будет скомпилирован.
  4. Для SimpleCalcTest, изменить Project | Properties | C/C++ | Additional Include Directories на $(SolutionDir)\gtest\include;$(SolutionDir)\SimpleCalc;%(AdditionalIncludeDirectories). Это будет иметь отношение к проекту.
  5. Для SimpleCalcTest измените Project | Properties | Linker | Additional Library Directories на $(SolutionDir)\gtest;%(AdditionalLibraryDirectories) - вам не нужен каталог SimpleCalc, потому что проект добавлен к ссылкам.
  6. Для SimpleCalcWrapper, изменить Project | Properties | C/C++ | Additional Include Directories к $(SolutionDir)\SimpleCalc;%(AdditionalIncludeDirectories)
  7. Для SimpleCalcWrapper, сброс по умолчанию Project | Properties | Linker | Additional Library Directories - вам не нужно каталог SimpleCalc, поскольку проект добавляется в ссылки.
+0

Фантастический. Похоже, что я сделал неправильные шаги, возможно, между версиями debug/release. Я знаю, что пытался исправить это, используя мешанину ответов, которые я * думал *, я смог отменить правильно. Особенно спасибо за подсказку $ (SolutionDir). – person27