如果我理解正确,这意味着
extern void foo();
Run Code Online (Sandbox Code Playgroud)
函数foo在另一个翻译单元中声明.
1)为什么不#include声明此函数的头?
2)链接器如何知道在链接时寻找函数的位置?
编辑:也许我应该澄清上面的声明然后使用该函数
foo();
Run Code Online (Sandbox Code Playgroud)
它从未在此翻译单元中定义.
我正在尝试使用特定类的内联成员函数.例如,没有内联的函数声明和实现是这样的:
在头文件中:
int GetTplLSize();
Run Code Online (Sandbox Code Playgroud)
在.cpp文件中:
int NeedleUSsim::GetTplLSize()
{
return sampleDim[1];
}
Run Code Online (Sandbox Code Playgroud)
出于某种原因,如果我将"inline"关键字放在实现和声明中的任何一个中,以及两个地方,我都会收到链接器错误,如下所示:
Creating library C:\DOCUME~1\STANLEY\LOCALS~1\TEMP\MEX_HN~1\templib.x and object C:\DOCUME~1\STANLEY\LOCALS~1\TEMP\MEX_HN~1\templib.exp mexfunction.obj : error LNK2019: unresolved external symbol "public: int __thiscall NeedleUSsim::GetTplLSize(void)" (?GetTplLSize@NeedleUSsim@@QAEHXZ) referenced in function _mexFunction mexfunction.mexw32 : fatal error LNK1120: 1 unresolved externals C:\PROGRA~1\MATLAB\R2008B\BIN\MEX.PL: Error: Link of 'mexfunction.mexw32' failed.
为了摆脱这个错误需要做什么(即在制作这些内联成员函数方面我做错了什么)?