ฉันได้รับข้อผิดพลาดนี้ แต่ไม่รู้วิธีแก้ไข
ฉันใช้ Visual Studio 2013 ฉันตั้งชื่อโซลูชันว่าMyProjectTest นี่คือโครงสร้างของโซลูชันการทดสอบของฉัน:
- ฟังก์ชั่น 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;
}
ฉันเป็นมือใหม่ นี่เป็นโปรแกรมง่ายๆและทำงานโดยไม่มีข้อผิดพลาด ฉันอ่านในอินเทอร์เน็ตและเริ่มสนใจการทดสอบหน่วยการเรียนรู้ดังนั้นฉันจึงสร้างโครงการทดสอบ:
ไฟล์> ใหม่> โครงการ ... > ติดตั้ง> เทมเพลต> Visual C ++> ทดสอบ> โครงการทดสอบหน่วยดั้งเดิม>
ชื่อ: โซลูชัน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 หรือไม่
(ฉันไม่เก่งภาษาอังกฤษมากขอบคุณ)