首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >导出模板化内联函数-不允许定义函数dllimport

导出模板化内联函数-不允许定义函数dllimport
EN

Stack Overflow用户
提问于 2015-02-19 22:54:55
回答 1查看 172关注 0票数 1

我正在尝试实现数学库,但我被困在导出上。我有一个2维向量的模板类:

向量2.h:

代码语言:javascript
复制
    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函数。为什么会出现这种情况,以及如何解决?

EN

回答 1

Stack Overflow用户

发布于 2015-02-19 23:54:05

我认为在这种情况下,您不需要为您的类指定dllimport/export。因为所有的源代码对用户来说都是可用的,而且他注意到的唯一一件事就是将vactor2.h头文件包含到他的项目中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28609455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档