好,

以下是我正在尝试做的事情......现在它正在编译但未能链接...... LNK2001

我希望方法是静态的,因为没有成员变量,但是我也希望它们内联它们提供的加速。

最好的方法是什么?以下是我的简要说明:

/* foo.h */
class foo
{
    static void bar(float* in);
};

/* foo.cpp */
inline void foo::bar(float* in)
{
    // some dark magic here
}

我正在尝试这样做,因为我希望能够去:

foo::bar(myFloatPtr);

foo没有任何成员变量......它没有意义。

有帮助吗?

解决方案

如果你从另一个cpp文件(foo.cpp除外)调用bar,它需要在头文件中。

其他提示

首先,我会将它们放在命名空间中,因为在" class" 中根本没有逻辑。其次,您可以直接在头文件中定义函数体,以允许编译器查看它们。否则,您需要链接器完成整个程序优化以内联这些函数(AFAIK)。

您必须在头文件中定义内联函数,而不是单独的实现文件。当头文件是#included时,如果希望它们被内联,那么这些定义是必需的。

您看到的链接失败是因为声明(在头文件中)没有通知编译器该方法是内联的,而实现是内联的,因此无法用于链接。

通常可以在声明它们的位置(在头文件中)实现内联函数。编译器可以像你拥有的那样自由内联函数,但你不能强制它内联任何东西。如果您使用的是Visual C ++,请启用“内联任何合适的”,“链接时代码生成”。并且“赞成快速代码”。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top