Мое решение состоит из трех проектов: GoogleTest (для использования Google Test), Vi (для большей части логики) и ViTests (для модульных тестов с использованием Vi). Проект ViTests ссылается на проект Vi и проект Google Test.Ошибка компоновщика при определении функции в файле cpp
Vi имеет следующий код в v1.h
#pragma once
namespace Vi
{
class Vi1
{
public:
int SomeInt();
};
}
и согласующий v1.cpp
#include "vi1.h"
namespace Vi
{
int Vi1::SomeInt()
{
return 123;
}
}
Функция испытания в ViTests следует
TEST(Vi1Foo, SomeIntIsSame)
{
Vi1 v = Vi1{};
EXPECT_EQ(123, v.SomeInt());
}
ошибка линкера говорит есть неразрешенный символ SomeInt
. Тем не менее, я могу сделать ошибку линкера уйти от встраивания функции, как так:
namespace Vi
{
class Vi1
{
public:
int SomeInt() { return 123; }
};
}
Почему тестовый проект модуля не находит определение SomeInt
функции, когда она расположена в отдельном файл CPP?
Спасибо.
Дополнительные детали упаковывают полезные: Я использую Visual Studio 2015.
Сообщения об ошибке:
Error LNK2019 unresolved external symbol "public: int __thiscall Vi::Vi1::SomeInt(void)" ([email protected]@[email protected]@QAEHXZ) referenced in function "private: virtual void __thiscall ViTests::Vi1Foo_SomeIntIsSame_Test::TestBody(void)" ([email protected][email protected]@@EAEXXZ) Vi_Tests C:\Users\MyName\Vi\Vi_Tests\Vi_Tests.obj 1
Типы проектов: Vi является приложением Win32, ViTests является консольным приложением Win32, GoogleTest является статическая библиотека.
Вы ссылаетесь на файл с определением функции? –
Я не знаю, что вы имеете в виду. Я должен включить имя файла cpp в список «дополнительных зависимостей»? –
Как я могу связать файл с определением функции? –