我正在尝试使用特定类的内联成员函数。例如,没有内联的函数声明和实现是这样的:

在头文件中:

int GetTplLSize();

在.cpp文件中:
int NeedleUSsim::GetTplLSize()
{
    return sampleDim[1];
}

由于某种原因,如果我在实现和声明中的任何一个以及两个地方都放入“inline”关键字,则会出现链接器错误,如下所示:

创建库C:\DOCUME〜1\STANLEY\LOCALS〜1\TEMP\MEX_HN〜1\templib.x和对象C:\DOCUME〜1\STANLEY\LOCALS〜1\TEMP\MEX_HN〜1\templib.exp
mexfunction.obj:错误LNK2019:未解析的外部符号“公共(public):int __thiscall NeedleUSsim::GetTplLSize(void)”(?GetTplLSize @ NeedleUSsim @@ QAEHXZ)在函数_mexFunction中引用
mexfunction.mexw32:致命错误LNK1120:1个 Unresolved external 组件

C:\PROGRA〜1\MATLAB\R2008B\BIN\MEX.PL:错误:链接'mexfunction.mexw32'失败。

为了摆脱这个错误,需要做什么(即,在制作这些内联成员函数方面我做错了什么)?

最佳答案

然后,您需要将函数定义放入 header 中。提示编译器内联的最简单方法是在类声明中包括方法主体,例如:


class NeedleUSsim
{
  // ...
  int GetTplLSize() const { return sampleDim[1]; }
  // ...
};

或者,如果您坚持使用单独的声明和定义:

class NeedleUSsim
{
  // ...
  int GetTplLSize() const;
  // ...
};

inline int NeedleUSsim::GetTplLSize() const
{ return sampleDim[1]; }

该定义必须在使用该方法的每个翻译单元中可见。

10-06 05:24