我试图实施数学库,但我一直坚持出口。我有一个二维向量的模板类:
vector2.h:
template <typename T>
class GE_API Vector2
{
public:
T x;
T y;
// Indexation
T& operator [] (const size_t i);
const T& operator [] (const size_t i) const;
bool operator == (const Vector2& v) const;
bool operator != (const Vector2& v) const;
// Negation
const Vector2 operator - () const;
// Assignement
const Vector2& operator = (const Vector2& v);
const Vector2& operator += (const Vector2& v);
const Vector2& operator -= (const Vector2& v);
template <typename S>
const Vector2& operator *= (const S& s);
template <typename S>
const Vector2& operator /= (const S& s);
const Vector2 operator + (const Vector2& v) const;
const Vector2 operator + (const T& s) const;
const Vector2 operator - (const Vector2& v) const;
const Vector2 operator - (const T& s) const;
template <typename S>
const Vector2 operator * (const S& s) const;
const Vector2 operator * (const Vector2& v) const;
template <typename S>
const Vector2 operator / (const S& s) const;
const Vector2 operator / (const Vector2& v) const;
};
template <typename T>
GE_API const T dot(const Vector2<T>& a, const Vector2<T>& b);
template <typename T>
GE_API const T length(const Vector2<T>& v);
//..and other functionality
#include <vector2.inl>
运算符和函数的定义位于头文件中包含的单独文件vector2.inl中。 GE_API是标准的dllimport / export宏。问题是当我尝试导出这个类和vector2.h头文件中定义的函数时,我在运算符的定义上得到错误,不允许定义dllimport函数。为什么这样以及如何解决这个问题?
答案 0 :(得分:0)
我认为在这种情况下,您不需要为您的类指定dllimport / export。 因为所有源代码都可以提供给用户,并且只有他需要注意的是将vactor2.h头部包含在他的项目中。