Новичок в 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 :: UnitTestd1 :: Test (void) "(? TestMethod1 @ UnitTest1 @ Tests @@ QAEXXZ)