このエラーが発生しましたが、修正方法がわかりません。
私は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(未解決の外部シンボル)が発生します。複数の関数の実装が欠落していることを知っています。function.cppファイルを削除しようとしましたが、宣言を定義に置き換えて実行しました。ただし、宣言と定義の両方を同じファイルに書き込むことはお勧めしません。それを行わずにこのエラーを修正するにはどうすればよいですか?#include "../MyProjectTest/function.cpp"
unittest.cppので置き換えますか?
(私は英語があまり得意ではありません。ありがとうございます)
.LIB
ファイル拡張子があります。物事を複雑にする...ダイナミックリンクライブラリ(つまり*.DLL
)には、ファイル拡張子も付いたインポートライブラリが付随している場合があり.LIB
ます。このインポートライブラリには、が提供するすべての便利な機能がリストされてい*.DLL
ます。詳細については、次を参照してください。リンカーの初心者向けガイド