对于 64位Windows 和 odbc版本> 3.0 ,sqltypes.h
将SQLHANDLE定义为
#if defined(WIN32) || defined(_WIN64)
typedef void* SQLHANDLE;
#else
如果你需要通过COM编组这个变量
[id(1)] HRESULT SQLAllocHandle([in] SQLSMALLINT HandleType, [in] SQLHANDLE InputHandle, [out] SQLHANDLE* OutputHandle, [out,retval] SQLRETURN* rc);
你会收到编译错误
error MIDL2139: type of the parameter cannot derive from void or void *
在这种情况下我可以使用的SQLHANDLE的替换typedef是什么?
答案 0 :(得分:0)
通过COM传递任何类型的HANDLE
,无论是HWND
还是其他类型的常用技巧是将其转换为long
。
答案 1 :(得分:0)
在这种特殊情况下,当我使用ATL时,我将SQLHANDLE重新定义为OLE_HANDLE。这启用了客户端和服务器进程之间的透明同步。