Ich erhalte diesen Fehler, weiß aber nicht, wie ich ihn beheben soll.
Ich verwende Visual Studio 2013. Ich habe den Lösungsnamen MyProjectTest erstellt. Dies ist die Struktur meiner Testlösung:
- 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;
}
Ich bin ein Anfänger; Dies ist ein einfaches Programm, das fehlerfrei ausgeführt wird. Ich habe im Internet gelesen und mich für den Unit-Test interessiert, also habe ich ein Testprojekt erstellt:
Datei> Neu> Projekt ...> Installiert> Vorlagen> Visual C ++> Test> Native Unit Test Project>
Name: UnitTest1 Lösung: Zur Lösung hinzufügen Dann wird der Speicherort automatisch auf den Pfad der aktuell geöffneten Lösung umgeschaltet. Dies ist die Ordnerstruktur der Lösung:
Ich habe nur die Datei unittest1.cpp bearbeitet:
#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
}
};
}
Aber ich bekomme den Fehler LNK2019: ungelöstes externes Symbol. Ich weiß, dass die Implementierung der Funktion multiple fehlt. Ich habe versucht, die Datei function.cpp zu löschen, die Deklaration durch die Definition ersetzt und sie ausgeführt. Es wird jedoch nicht empfohlen, sowohl die Deklaration als auch die Definition in dieselbe Datei zu schreiben. Wie kann ich diesen Fehler beheben, ohne das zu tun? Sollte ich durch #include "../MyProjectTest/function.cpp"
in der Datei unittest.cpp ersetzen ?
(Ich kann nicht sehr gut Englisch. Danke)
.LIB
Dateierweiterung. Um die Sache zu verkomplizieren ... können dynamische Linkbibliotheken (dh *.DLL
) eine zugehörige Importbibliothek haben, die auch eine .LIB
Dateierweiterung hat. Diese Importbibliothek listet alle von der *.DLL
. Weitere Informationen finden Sie unter: Anfängerleitfaden für Linker