我在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'
...
有什么想法吗?我错过了什么吗?
答案 0 :(得分:1)
感谢Roger Rowland,我修复了我的解决方案中的错误。
我命名了一个文件"String.h"
,它使用我的模板struct Ref。
由于在我的项目中默认存在另一个名为<string.h>
的文件(来自C ++ STL),编译器使用了这个而不是我的文件,因此出现了错误。
第一个的简单重命名解决了这个问题。