Ottengo questo errore, ma non so come risolverlo.
Sto usando Visual Studio 2013. Ho creato il nome della soluzione MyProjectTest Questa è la struttura della mia soluzione di test:
- 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;
}
Sono un principiante; questo è un programma semplice e funziona senza errori. Ho letto su Internet e mi sono interessato allo unit test, quindi ho creato un progetto di test:
File> Nuovo> Progetto ...> Installato> Modelli> Visual C ++> Test> Progetto unit test nativo>
Nome: UnitTest1 Soluzione: Aggiungi alla soluzione Quindi la posizione passa automaticamente al percorso della soluzione aperta corrente Questa è la struttura delle cartelle della soluzione:
Ho modificato solo il file 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
}
};
}
Ma ottengo l'errore LNK2019: simbolo esterno non risolto. So che manca l'implementazione della funzione multipla . Ho provato a eliminare il file function.cpp e ho sostituito la dichiarazione con la definizione, ed è stato eseguito. Tuttavia, non è consigliabile scrivere sia la dichiarazione che la definizione nello stesso file. Come posso correggere questo errore senza farlo? Devo sostituire con #include "../MyProjectTest/function.cpp"
nel file unittest.cpp?
(Non sono molto bravo in inglese. Grazie)
.LIB
un'estensione di file. Per complicare le cose ... le librerie di collegamento dinamico (cioè *.DLL
) possono avere una libreria di importazione accompagnata che ha anche .LIB
un'estensione di file. Questa libreria di importazione elenca tutte le chicche fornite da *.DLL
. Per maggiori informazioni leggere: Guida per principianti ai linker