我正在尝试实现数学库,但我被困在导出上。我有一个2维向量的模板类:
向量2.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函数。为什么会出现这种情况,以及如何解决?
发布于 2015-02-19 23:54:05
我认为在这种情况下,您不需要为您的类指定dllimport/export。因为所有的源代码对用户来说都是可用的,而且他注意到的唯一一件事就是将vactor2.h头文件包含到他的项目中。
https://stackoverflow.com/questions/28609455
复制相似问题