Я получаю эту ошибку, но я не знаю, как ее исправить.Как решить ошибку LNK2019: нерешенный внешний символ - функция?
Я использую Visual Studio 2013. Я сделал имя решения MyProjectTest Это структура моего тестового раствора:
- function.h
#ifndef MY_FUNCTION_H
#define MY_FUNCTION_H
int multiple(int x, int y);
#endif
-function.cpp
#include "function.h"
int multiple(int x, int y){
return x*y;
}
- main.cpp
#include <iostream>
#include <cstdlib>
#include "function.h"
using namespace std;
int main(){
int a, b;
cin >> a >> b;
cout << multiple(a, b) << endl;
system("pause");
return 0;
}
Я новичок; это простая программа, и она работает без ошибок. Я прочитал в интернете и стал интересоваться в тестовом модуле, поэтому я создал тестовый проект:
File> New> Project ...> Installed> Шаблоны> Visual C++> Test> Project Test Native Unit>
Имя: UnitTest1 решение: Добавить в раствор Затем местоположение автоматически переключается на путь текущего открытого решения Это структура папок решения:
Я только отредактированный файл unittest1.cpp:
#include "stdafx.h"
#include "CppUnitTest.h"
#include "../MyProjectTest/function.h"
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
namespace UnitTest1
{
TEST_CLASS(UnitTest1)
{
public:
TEST_METHOD(TestEqual)
{
Assert::AreEqual(multiple(2, 3), 6);
// TODO: Your test code here
}
};
}
Но я получаю LNK2019 ошибки: неразрешенный внешний символ. Я знаю, что реализация функции несколько отсутствует. Я попытался удалить файл function.cpp, и я заменил объявление на определение, и он запустился. Но написать декларацию и определение в том же файле не рекомендуется. Как я могу исправить эту ошибку, не делая этого? Должен ли я заменить #include "../MyProjectTest/function.cpp"
на файл unittest.cpp? (. Я не очень хорошо на английском языке очень много спасибо)
Возможный дубликат [Что такое неопределенная ссылка/неразрешенная ошибка внешнего символа и как ее исправить?] (Http://stackoverflow.com/questions/12573816/what-is-an-undefined-reference-unresolved- external-symbol-error-and-how-do-i-fix) – WhozCraig
** BE CAREFUL ** В * среде Windows *, статические библиотеки имеют расширение '.LIB'. Чтобы усложнить ситуацию ... библиотеки динамических ссылок (например, '* .DLL') могут иметь сопровождающую * библиотеку импорта *, которая также имеет расширение' .LIB'. В этой библиотеке импорта перечислены все полезные свойства, предоставленные '* .DLL'. Для получения дополнительной информации, пожалуйста, прочитайте: [Руководство для начинающих по компоновщикам] (http://www.lurklurk.org/linkers/linkers.html) – Pressacco
Зачем ему быть осторожным? –