0

我有两个项目。一个创建一个 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:未解析的外部符号“公共:void __thiscall xclass::ComputeWeightingMatrix(class constellation &,char)”(?ComputeWeightingMatrix@xclass@@$$FQAEXAAVconstellation@@D@Z)

4

1 回答 1

1

在 Chat 中经过一番讨论后,发现这个问题的解决方法有两个部分:

  1. 需要使用 DLL 类中的存根库。
  2. 需要使用class __declspec(dllexport) XClass以确保导出类中的功能。
于 2013-07-17T14:11:43.180 回答