У меня есть два проекта. Один создает 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)
После некоторого обсуждения в чате выясняется, что решение этой проблемы состоит из двух частей:
class __declspec(dllexport) XClass
чтобы гарантировать, что функциональность из класса экспортируется.Других решений пока нет …