返回对DLL中对象的引用

Return reference to object in DLL

本文关键字:引用 对象 DLL 返回      更新时间:2023-10-16

各位程序员好。

我遇到了一个奇怪的问题,完全不知道发生了什么。

所以我要做一个小的库,里面有一些基本的东西,比如数学和一个窗口类。

现在的问题,在我的vec2类我想返回一个对象的引用,但我得到这个编译错误"错误C2059:语法错误:'__declspec(dllexport)'"

class vec2 {
public:
float x, y;
vec2(float x = 0, float y = 0) : x(x), y(y) { }
float FW_API length();
vec2  FW_API normalize();
float FW_API dot(vec2& v);
vec2& FW_API rotate(float angle);
vec2& FW_API translate(float x, float y);
vec2& FW_API translate(vec2& v);
vec2 FW_API operator+(vec2& v);
vec2 FW_API operator-(vec2& v);
vec2 FW_API operator*(vec2& v);
vec2 FW_API operator/(vec2& v);
void FW_API operator+=(vec2& v);
void FW_API operator-=(vec2& v);
void FW_API operator*=(vec2& v);
void FW_API operator/=(vec2& v);
};

FW_API定义为__declspec(dllexport)

如果我删除&符号,它编译没有问题,但不是与他们。

那么,当导出方法到dll时,它甚至可能做到这一点吗?

解决方案

类FW_API vec2

将__declspec(dllexport)放在整个类上,而不是单个方法上。

你的问题是"&"需要放在declspec:

的另一边。

代替:

vec2& FW_API rotate(float angle);

应该是:

vec2 FW_API & rotate(float angle);