Выпуск функций импорта из DLL C ++. LNK 2001

У меня есть два проекта. Один создает DLL, а другой должен использовать функции, объявленные в DLL, но у меня есть проблемы с реализацией этого.

В проекте DLL у меня есть эти объявления:

using namespace XClass;

extern "C" __declspec(dllexport) int Compute(XClass::XClassInput input, XClassOutput &XClassOutput);

extern "C" __declspec(dllexport) int Init( string configFileName);

class xclass
{

public:
xclass(void);
xclass(constellation &Constellation, XClass::XClassConfig &XClassConfig);

void   ComputeWeightingMatrix(constellation &xclass_constellation, char flagIntCont);
void   ComputeGMatrix(constellation &Constellation, XClass::XClassInput &input);

private:
int _numberOfSystemStates;
};

В проекте, который должен использовать функции DLL, у меня есть это:

int _tmain(int argc, _TCHAR* argv[])
{

XClass::XClassConfig xClassConfig;
XClassOutput xClassOutput;

XClass::XClassInput input;

init(input, xClassOutput );

constellation* class_constellation = new constellation(input, xClassConfig);

xclass* algorithm = new xclass(*xclass_constellation, xClassConfig);algorithm->ComputeWeightingMatrix(*xclass_constellation,  'i');return 0;
}

Код для функции ComputeWeighting Matrix:

    void xclass::ComputeWeightingMatrix(constellation &Constellation, char flagIntCont)
{
double sigma = 0.0;
long error;

...
}

Когда я пытаюсь построить, я получаю его:

ошибка LNK2001: неразрешенный внешний символ «public: void __thiscall xclass :: ComputeWeightingMatrix (созвездие класса &, char) «(? ComputeWeightingMatrix @ xclass @@ $$ FQAEXAAVconstellation @@ D @ Z)

0

Решение

После некоторого обсуждения в чате выясняется, что решение этой проблемы состоит из двух частей:

  1. Нужно использовать заглушку из библиотеки DLL.
  2. Нужно использовать class __declspec(dllexport) XClass чтобы гарантировать, что функциональность из класса экспортируется.
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]