-
-
怪异的VC编译问题,请指点一下。
-
发表于:
2011-1-21 23:20
4350
-
各位前辈,最近在看 Detour Hook COM interface 的代码,在例程里面有以下代码
//////////////////////////////////////////////////////////////////////////////
//
// WARNING:
//
// CINTERFACE must be defined so that the lpVtbl pointer is visible
// on COM interfaces. However, once we've defined it, we must use
// coding conventions when accessing interface members, for example:
// i->lpVtbl->Write
// instead of the C++ syntax:
// i->Write.
// We must also pass the implicit "this" parameter explicitly:
// i->lpVtbl->Write(i, pb, 0, NULL)
// instead of the C++ syntax:
// i->Write(pb, 0, NULL)
//
#define CINTERFACE
#include <ole2.h>
#include <Objbase.h>
#include <windows.h>
#include <detours.h>
//////////////////////////////////////////////////////////////////////////////
上面的注释提到了CINTERFACE 可以使用lpVtbl 。
小弟依葫芦画瓢,创建了一个DLL工程(非MFC),
pStream->lpVtbl->SetSize(pStream, ul);
这句总是编译不过,提示
s2005dll.cpp(58) : error C2039: “lpVtbl”: 不是“IStream”的成员
1> D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\objidl.h(4444) : 参见“IStream”的声明
为何lpVtbl无法用呢?很是苦恼,要怎么样才行?谢谢指点。
[课程]Android-CTF解题方法汇总!