我正在尝试使用特定类的内联成员函数。例如,没有内联的函数声明和实现是这样的:
在头文件中:
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]; }
该定义必须在使用该方法的每个翻译单元中可见。