gpt4 book ai didi

c++ - 使用导出的成员函数返回指向 MSG 的指针 - DLL

转载 作者:行者123 更新时间:2023-11-30 05:35:53 24 4
gpt4 key购买 nike

这是一个重现的例子

// in a header from a dll

class Window{
public:
MSG _declspec(dllexport) *getMessage(); //compiles
MSG* _declspec(dllexport) getMessage(); //fails
}

定义在 .cpp 文件中设置。

在应用程序中,我无法访问成员函数,为什么?我当然是从 Window 的实例访问该功能,例如:

Window App;
func_with_parameters(param,App.getMessage(),0,0); // not found !

最佳答案

好的,首先。

    __declspec(dllexport) MSG* GetMessage();

是函数定义的正确方式。

其次,使用该 dll 的项目的头文件中的 __declspec(dllexport) 需要是 __declspec(dllimport),否则它将不会导入。这通常是通过这样的宏来处理的。

    #ifdef _WINDLL // Defined by Visual Studio when building a Dll
#define DLL_API __declspec(dllexport)
#else
#define DLL_API __declspec(dllimport)
#endif

第三,在类级别而不是函数级别导出可能更好,例如

    class __declspec(dllexport) Window

或者用宏

    class DLL_API Window

关于c++ - 使用导出的成员函数返回指向 MSG 的指针 - DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33719629/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com