Нов в c++ и се опитва да тества dll, но продължава да получава
warning C4273: 'CRootFinder::SquareRoot' : inconsistent dll linkage
RootFinder.h
#ifdef MY_EXPORTS
#define API _declspec(dllexport)
#else
#define API _declspec(dllimport)
#endif
class API CRootFinder {
public:
CRootFinder(void);
double SquareRoot(double v);
};
RootFinder.cpp
#include "stdafx.h"
#include "RootFinder.h"
double CRootFinder::SquareRoot(double v)
{
return 0.0;
}
Изгражда, но получава предупреждение по-горе.
Добавена е препратка към dll към проект за тестване на единица
unittest1.cpp
#include "stdafx.h"
#include "CppUnitTest.h"
#include "../c source/RootFinder.h"
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
namespace Tests
{
TEST_CLASS(UnitTest1)
{
public:
TEST_METHOD(TestMethod1)
{
CRootFinder rooter;
Assert::AreEqual(
// Expected value:
0.0,
// Actual value:
rooter.SquareRoot(0.0),
// Tolerance:
0.01,
// Message:
L"Basic test failed",
// Line number - used if there is no PDB file:
LINE_INFO());
}
};
}
Няма да строи
Грешка 2 грешка LNK2019: неразрешен външен символ "__declspec(dllimport) public: __thiscall CRootFinder::CRootFinder(void)" (__imp_??0CRootFinder@@QAE@XZ), посочен във функция "public: void __thiscall Tests::UnitTest1::TestMethod1 (невалиден)" (?TestMethod1@UnitTest1@Tests@@QAEXXZ)