这是一个复制示例
// 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 !
答案 0 :(得分:1)
好的,首先关闭。
__declspec(dllexport) MSG* GetMessage();
功能定义应该是正确的方式。
其次,__declspec(dllexport)
需要在使用dll的项目的头文件中为__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