我遇到了这个错误,但不知道如何修复它。
我正在使用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;
}
我是一位初学者;这是一个简单的程序,运行时没有错误。 我在网上看到关于单元测试的内容,于是我创建了一个测试项目:
菜单 文件 → 新建 → 项目... → 已安装 → 模板 → 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:未解析的外部符号。
我知道函数 multiple 的实现缺失。
我尝试删除 function.cpp 文件并将声明替换为定义,然后它可以运行。但是在同一个文件中编写声明和定义不被推荐。
我该如何修复此错误而不这样做呢?我应该在 unittest.cpp 文件中用 #include "../MyProjectTest/function.cpp"
替换它吗?
.LIB
。为了让事情更加复杂,动态链接库(即*.DLL
)可以有一个伴随着的导入库,它也有一个.LIB
的扩展名。这个导入库会列出所有由*.DLL
提供的好东西。获取更多信息,请阅读:连接器入门指南。 - Pressacco