描述:
1. STDMETHOD 加上那个virtual 有什么用? 必须得有吗?
2. STDAPI 什么时候没有export keyword, 如果没有就不能被外部看到了吗?
3. 他们之间的区别和用法
thanks a lot
解决方案1:
Virtual 是c++的关键字,表示这个函数是个虚函数,推荐看看C++教程。
其它几个宏,都是WINdows中有关调用方法和输出的定义,推荐看看WINDOWS程序设计。
先多读些参考书吧。
1.#ifdef _WIN32 // Win32 doesn't support __export
#define STDMETHODCALLTYPE __stdcall
#else
#define STDMETHODCALLTYPE __export __stdcall
#endif
2.#define STDMETHOD(method) virtual HRESULT STDMETHODCALLTYPE method
3.#define STDMETHODIMP HRESULT STDMETHODCALLTYPE
4.#define STDAPI EXTERN_C HRESULT STDAPICALLTYPE
5.#ifdef __cplusplus
#define EXTERN_C extern "C"
#else
#define EXTERN_C extern
#endif
6.typedef LONG HRESULT;
简单的说,就是函数默认是__cdecl调用方式,一般其他语言用的是__stdcall方式,所以用c++写的程序中的函数要想被别的语言调用,就必须申明__stdcall,WIN32 API大部分是这种方式的,以上一些宏只是对它们的简单包装而已.
解决方案4:gz