Return 引用 DLL 中的对象
Return reference to object in DLL
各位程序员大家好。
我遇到了一个奇怪的问题,完全不知道发生了什么。
所以我正在制作一个小型图书馆,其中包含一些基础知识,例如数学和 window class。
现在问题来了,在我的 vec2 class 中,我想 return 一个对象的引用,但是我得到了这个编译错误 "error C2059: syntax error: '__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 时甚至可以这样做吗?
解决方案
class FW_API vec2
将 __declspec(dllexport) 放在整个 class 而不是单个方法上。
您的问题是“&”需要放在 declspec
的另一边:
而不是:
vec2& FW_API rotate(float angle);
应该是:
vec2 FW_API & rotate(float angle);
各位程序员大家好。
我遇到了一个奇怪的问题,完全不知道发生了什么。
所以我正在制作一个小型图书馆,其中包含一些基础知识,例如数学和 window class。
现在问题来了,在我的 vec2 class 中,我想 return 一个对象的引用,但是我得到了这个编译错误 "error C2059: syntax error: '__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 时甚至可以这样做吗?
解决方案
class FW_API vec2
将 __declspec(dllexport) 放在整个 class 而不是单个方法上。
您的问题是“&”需要放在 declspec
的另一边:
而不是:
vec2& FW_API rotate(float angle);
应该是:
vec2 FW_API & rotate(float angle);