C2894没有任何'外部'

时间:2013-07-01 22:45:08

标签: visual-c++ linkage

我在C ++中有一个非常简单的代码,这里是:

namespace Phoenix
{
    template<typename T>
    struct Ref
    {
    private: T* _instance;
    public: inline Ref(T* instance) { ... }
    public: inline Ref(const Ref<T> &reference) { ... }
    public: inline Ref<T>& operator=(const Ref<T> &reference) { ... }
    };
}

此代码位于Visual 2012 C ++库中。

现在,如果我尝试在最终应用程序中重用它,则会发生C2894错误,说我无法声明模板具有“C”链接。行。

我没有使用extern 'C' ...

有什么想法吗?我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

感谢Roger Rowland,我修复了我的解决方案中的错误。

我命名了一个文件"String.h",它使用我的模板struct Ref。

由于在我的项目中默认存在另一个名为<string.h>的文件(来自C ++ STL),编译器使用了这个而不是我的文件,因此出现了错误。

第一个的简单重命名解决了这个问题。