I have a COM library project and now would like to pass an INT64 argument in an interface method.
When compiling the IDL however I get ...Any suggestion ?Quote:
error MIDL2025 : syntax error : expecting a type specification near "INT64"
Printable View
I have a COM library project and now would like to pass an INT64 argument in an interface method.
When compiling the IDL however I get ...Any suggestion ?Quote:
error MIDL2025 : syntax error : expecting a type specification near "INT64"
It should be LONGLONG
Thx for the hint but when using LONGLONG I getThe code in IDL isCode:warning MIDL2039 : interface does not conform to [oleautomation] attribute
Code:[id(5), helpstring("method ParamTest")] HRESULT ParamTest([in] LONGLONG n64Input, [out] int* pResult);
Tested the following:
Built with max error/warning level. Got not a single warning of the kind:Code:#include "olectl.h"
import "oaidl.idl";
import "ocidl.idl";
[
object,
uuid(00000000-0000-0000-0000-000000000001),
oleautomation,
nonextensible,
helpstring("ITest Interface"),
pointer_default(unique)
]
interface ITest : IDispatch{
[id(1), helpstring("method ParamTest")] HRESULT ParamTest([in] LONGLONG n64Input, [out] int* pResult);
};
[
uuid(00000000-0000-0000-0000-000000000002),
version(1.0),
helpstring("Test 1.0 Type Library")
]
library TestLib
{
importlib("stdole2.tlb");
[
uuid(00000000-0000-0000-0000-000000000003),
helpstring("Test Class")
]
coclass Test
{
[default] interface ITest;
};
};
Code:Processing .\589.idl
Processing C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\oaidl.idl
Processing C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\objidl.idl
Processing C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\unknwn.idl
Processing C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\wtypes.idl
Processing C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\basetsd.h
Processing C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\guiddef.h
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\wtypes.idl(671) : warning MIDL2111 : identifier length exceeds 31 characters : STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\objidl.idl(2308) : warning MIDL2111 : identifier length exceeds 31 characters : FMTID_MediaFileSummaryInformation
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\objidl.idl(2499) : warning MIDL2111 : identifier length exceeds 31 characters : tagEOLE_AUTHENTICATION_CAPABILITIES
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\objidl.idl(2518) : warning MIDL2111 : identifier length exceeds 31 characters : EOLE_AUTHENTICATION_CAPABILITIES
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\objidl.idl(2616) : warning MIDL2111 : identifier length exceeds 31 characters : tagRPCOPT_SERVER_LOCALITY_VALUES
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\objidl.idl(2652) : warning MIDL2111 : identifier length exceeds 31 characters : COMGLB_EXCEPTION_DONOT_HANDLE_FATAL
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\objidl.idl(2653) : warning MIDL2111 : identifier length exceeds 31 characters : COMGLB_EXCEPTION_DONOT_HANDLE_FATAL
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\objidl.idl(2654) : warning MIDL2111 : identifier length exceeds 31 characters : COMGLB_EXCEPTION_DONOT_HANDLE_ANY
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\objidl.idl(2660) : warning MIDL2111 : identifier length exceeds 31 characters : COMGLB_RPC_THREADPOOL_SETTING_DEFAULT_POOL
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\objidl.idl(2661) : warning MIDL2111 : identifier length exceeds 31 characters : COMGLB_RPC_THREADPOOL_SETTING_PRIVATE_POOL
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\objidl.idl(3368) : warning MIDL2111 : identifier length exceeds 31 characters : APTTYPEQUALIFIER_NA_ON_IMPLICIT_MTA
Processing C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\ocidl.idl
Processing C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\oleidl.idl
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\oleidl.idl(329) : warning MIDL2111 : identifier length exceeds 31 characters : OLEMISC_RENDERINGISDEVICEINDEPENDENT
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\oleidl.idl(339) : warning MIDL2111 : identifier length exceeds 31 characters : OLEMISC_IGNOREACTIVATEWHENVISIBLE
Processing C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\servprov.idl
Processing C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\urlmon.idl
Processing C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\msxml.idl
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\urlmon.idl(700) : warning MIDL2111 : identifier length exceeds 31 characters : BINDINFO_OPTIONS_USE_IE_ENCODING
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\urlmon.idl(704) : warning MIDL2111 : identifier length exceeds 31 characters : BINDINFO_OPTIONS_IGNOREMIMETEXTPLAIN
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\urlmon.idl(705) : warning MIDL2111 : identifier length exceeds 31 characters : BINDINFO_OPTIONS_USEBINDSTRINGCREDS
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\urlmon.idl(706) : warning MIDL2111 : identifier length exceeds 31 characters : BINDINFO_OPTIONS_IGNOREHTTPHTTPSREDIRECTS
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\urlmon.idl(707) : warning MIDL2111 : identifier length exceeds 31 characters : BINDINFO_OPTIONS_IGNORE_SSLERRORS_ONCE
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\urlmon.idl(712) : warning MIDL2111 : identifier length exceeds 31 characters : BINDINFO_OPTIONS_ALLOWCONNECTDATA
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\urlmon.idl(713) : warning MIDL2111 : identifier length exceeds 31 characters : BINDINFO_OPTIONS_DISABLEAUTOREDIRECTS
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\urlmon.idl(714) : warning MIDL2111 : identifier length exceeds 31 characters : BINDINFO_OPTIONS_SHDOCVW_NAVIGATE
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\urlmon.idl(726) : warning MIDL2111 : identifier length exceeds 31 characters : BSCF_INTERMEDIATEDATANOTIFICATION
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\urlmon.idl(742) : warning MIDL2111 : identifier length exceeds 31 characters : BINDSTATUS_BEGINDOWNLOADCOMPONENTS
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\urlmon.idl(744) : warning MIDL2111 : identifier length exceeds 31 characters : BINDSTATUS_ENDDOWNLOADCOMPONENTS
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\urlmon.idl(749) : warning MIDL2111 : identifier length exceeds 31 characters : BINDSTATUS_CACHEFILENAMEAVAILABLE
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\urlmon.idl(757) : warning MIDL2111 : identifier length exceeds 31 characters : BINDSTATUS_VERIFIEDMIMETYPEAVAILABLE
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\urlmon.idl(761) : warning MIDL2111 : identifier length exceeds 31 characters : BINDSTATUS_CONTENTDISPOSITIONATTACH
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\urlmon.idl(770) : warning MIDL2111 : identifier length exceeds 31 characters : BINDSTATUS_COMPACT_POLICY_RECEIVED
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\urlmon.idl(777) : warning MIDL2111 : identifier length exceeds 31 characters : BINDSTATUS_COOKIE_STATE_DOWNGRADE
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\urlmon.idl(780) : warning MIDL2111 : identifier length exceeds 31 characters : BINDSTATUS_SESSION_COOKIE_RECEIVED
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\urlmon.idl(781) : warning MIDL2111 : identifier length exceeds 31 characters : BINDSTATUS_PERSISTENT_COOKIE_RECEIVED
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\urlmon.idl(782) : warning MIDL2111 : identifier length exceeds 31 characters : BINDSTATUS_SESSION_COOKIES_ALLOWED
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\urlmon.idl(784) : warning MIDL2111 : identifier length exceeds 31 characters : BINDSTATUS_CONTENTDISPOSITIONFILENAME
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\urlmon.idl(785) : warning MIDL2111 : identifier length exceeds 31 characters : BINDSTATUS_MIMETEXTPLAINMISMATCH
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\urlmon.idl(789) : warning MIDL2111 : identifier length exceeds 31 characters : BINDSTATUS_SERVER_MIMETYPEAVAILABLE
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\urlmon.idl(790) : warning MIDL2111 : identifier length exceeds 31 characters : BINDSTATUS_SNIFFED_CLASSIDAVAILABLE
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\urlmon.idl(877) : warning MIDL2111 : identifier length exceeds 31 characters : BINDF2_DISABLEAUTOCOOKIEHANDLING
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\urlmon.idl(878) : warning MIDL2111 : identifier length exceeds 31 characters : BINDF2_READ_DATA_GREATER_THAN_4GB
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\urlmon.idl(879) : warning MIDL2111 : identifier length exceeds 31 characters : BINDF2_DISABLE_HTTP_REDIRECT_XSECURITYID
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\urlmon.idl(1174) : warning MIDL2111 : identifier length exceeds 31 characters : CIP_TRUST_VERIFICATION_COMPONENT_MISSING
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\urlmon.idl(1175) : warning MIDL2111 : identifier length exceeds 31 characters : CIP_EXE_SELF_REGISTERATION_TIMEOUT
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\urlmon.idl(2332) : warning MIDL2111 : identifier length exceeds 31 characters : LPIINTERNETPROTOCOLSINKStackable
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\urlmon.idl(2817) : warning MIDL2111 : identifier length exceeds 31 characters : FEATURE_HTTP_USERNAME_PASSWORD_DISABLE
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\urlmon.idl(2820) : warning MIDL2111 : identifier length exceeds 31 characters : FEATURE_GET_URL_DOM_FILEPATH_UNENCODED
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\urlmon.idl(2823) : warning MIDL2111 : identifier length exceeds 31 characters : FEATURE_DISABLE_NAVIGATION_SOUNDS
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\urlmon.idl(2824) : warning MIDL2111 : identifier length exceeds 31 characters : FEATURE_DISABLE_LEGACY_COMPRESSION
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\urlmon.idl(3068) : warning MIDL2111 : identifier length exceeds 31 characters : PUAF_NPL_USE_LOCKED_IF_RESTRICTED
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\urlmon.idl(3633) : warning MIDL2111 : identifier length exceeds 31 characters : ZAFLAGS_VERIFY_TEMPLATE_SETTINGS
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\ocidl.idl(379) : warning MIDL2111 : identifier length exceeds 31 characters : GUIDKIND_DEFAULT_SOURCE_DISP_IID
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\ocidl.idl(1566) : warning MIDL2111 : identifier length exceeds 31 characters : POINTERINACTIVE_DEACTIVATEONLEAVE
Processing C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\oaidl.acf
Processing C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\ocidl.acf
Running your makefile gives meGuess I'm missing a key point here !?!?Code:Processing .\589.idl
Processing C:\Program Files\Microsoft Visual Studio\VC98\include\oaidl.idl
Processing C:\Program Files\Microsoft Visual Studio\VC98\include\objidl.idl
Processing C:\Program Files\Microsoft Visual Studio\VC98\include\unknwn.idl
Processing C:\Program Files\Microsoft Visual Studio\VC98\include\wtypes.idl
C:\Program Files\Microsoft Visual Studio\VC98\include\wtypes.idl(702) : warning MIDL2111 : identifier length exceeds 31 characters : STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE
C:\Program Files\Microsoft Visual Studio\VC98\include\objidl.idl(23) : warning MIDL2007 : import ignored; file already imported : : wtypes.idl
C:\Program Files\Microsoft Visual Studio\VC98\include\objidl.idl(2843) : warning MIDL2111 : identifier length exceeds 31 characters : tagEOLE_AUTHENTICATION_CAPABILITIES
C:\Program Files\Microsoft Visual Studio\VC98\include\objidl.idl(2853) : warning MIDL2111 : identifier length exceeds 31 characters : EOLE_AUTHENTICATION_CAPABILITIES
Processing C:\Program Files\Microsoft Visual Studio\VC98\include\ocidl.idl
Processing C:\Program Files\Microsoft Visual Studio\VC98\include\oleidl.idl
C:\Program Files\Microsoft Visual Studio\VC98\include\oleidl.idl(18) : warning MIDL2007 : import ignored; file already imported : : objidl.idl
C:\Program Files\Microsoft Visual Studio\VC98\include\oleidl.idl(326) : warning MIDL2111 : identifier length exceeds 31 characters : OLEMISC_RENDERINGISDEVICEINDEPENDENT
C:\Program Files\Microsoft Visual Studio\VC98\include\oleidl.idl(336) : warning MIDL2111 : identifier length exceeds 31 characters : OLEMISC_IGNOREACTIVATEWHENVISIBLE
C:\Program Files\Microsoft Visual Studio\VC98\include\ocidl.idl(19) : warning MIDL2007 : import ignored; file already imported : : oaidl.idl
Processing C:\Program Files\Microsoft Visual Studio\VC98\include\servprov.idl
C:\Program Files\Microsoft Visual Studio\VC98\include\servprov.idl(35) : warning MIDL2007 : import ignored; file already imported : : objidl.idl
Processing C:\Program Files\Microsoft Visual Studio\VC98\include\urlmon.idl
C:\Program Files\Microsoft Visual Studio\VC98\include\urlmon.idl(33) : warning MIDL2007 : import ignored; file already imported : : objidl.idl
C:\Program Files\Microsoft Visual Studio\VC98\include\urlmon.idl(34) : warning MIDL2007 : import ignored; file already imported : : oleidl.idl
C:\Program Files\Microsoft Visual Studio\VC98\include\urlmon.idl(35) : warning MIDL2007 : import ignored; file already imported : : servprov.idl
Processing C:\Program Files\Microsoft Visual Studio\VC98\include\msxml.idl
C:\Program Files\Microsoft Visual Studio\VC98\include\msxml.idl(23) : warning MIDL2007 : import ignored; file already imported : : unknwn.idl
C:\Program Files\Microsoft Visual Studio\VC98\include\msxml.idl(24) : warning MIDL2007 : import ignored; file already imported : : wtypes.idl
C:\Program Files\Microsoft Visual Studio\VC98\include\msxml.idl(25) : warning MIDL2007 : import ignored; file already imported : : objidl.idl
C:\Program Files\Microsoft Visual Studio\VC98\include\msxml.idl(26) : warning MIDL2007 : import ignored; file already imported : : oaidl.idl
C:\Program Files\Microsoft Visual Studio\VC98\include\msxml.idl(47) : warning MIDL2007 : import ignored; file already imported : : oaidl.idl
C:\Program Files\Microsoft Visual Studio\VC98\include\urlmon.idl(533) : warning MIDL2111 : identifier length exceeds 31 characters : BSCF_INTERMEDIATEDATANOTIFICATION
C:\Program Files\Microsoft Visual Studio\VC98\include\urlmon.idl(548) : warning MIDL2111 : identifier length exceeds 31 characters : BINDSTATUS_BEGINDOWNLOADCOMPONENTS
C:\Program Files\Microsoft Visual Studio\VC98\include\urlmon.idl(550) : warning MIDL2111 : identifier length exceeds 31 characters : BINDSTATUS_ENDDOWNLOADCOMPONENTS
C:\Program Files\Microsoft Visual Studio\VC98\include\urlmon.idl(555) : warning MIDL2111 : identifier length exceeds 31 characters : BINDSTATUS_CACHEFILENAMEAVAILABLE
C:\Program Files\Microsoft Visual Studio\VC98\include\urlmon.idl(563) : warning MIDL2111 : identifier length exceeds 31 characters : BINDSTATUS_VERIFIEDMIMETYPEAVAILABLE
C:\Program Files\Microsoft Visual Studio\VC98\include\urlmon.idl(758) : warning MIDL2111 : identifier length exceeds 31 characters : CIP_TRUST_VERIFICATION_COMPONENT_MISSING
C:\Program Files\Microsoft Visual Studio\VC98\include\urlmon.idl(759) : warning MIDL2111 : identifier length exceeds 31 characters : CIP_EXE_SELF_REGISTERATION_TIMEOUT
C:\Program Files\Microsoft Visual Studio\VC98\include\ocidl.idl(375) : warning MIDL2111 : identifier length exceeds 31 characters : GUIDKIND_DEFAULT_SOURCE_DISP_IID
C:\Program Files\Microsoft Visual Studio\VC98\include\ocidl.idl(1465) : warning MIDL2111 : identifier length exceeds 31 characters : POINTERINACTIVE_DEACTIVATEONLEAVE
C:\Program Files\Microsoft Visual Studio\VC98\include\objidl.idl(3096) : warning MIDL2298 : [version] attribute is ignored on an [object] interface : [ Interface 'ISurrogate' ]
C:\Program Files\Microsoft Visual Studio\VC98\include\oaidl.idl(749) : warning MIDL2209 : redundantly specified attribute; ignored : [in] [ Parameter 'rgszNames' of Procedure 'SetFuncAndParamNames' ( Interface 'ICreateTypeInfo' ) ]
C:\Program Files\Microsoft Visual Studio\VC98\include\oleidl.idl(739) : warning MIDL2209 : redundantly specified attribute; ignored : [string] [ Type 'LPCOLESTR' ( Parameter 'pszObjName' ) ]
.\589.idl(14) : warning MIDL2039 : interface does not conform to [oleautomation] attribute : [ Parameter 'n64Input' of Procedure 'ParamTest' ( Interface 'ITest' ) ]
Maybe the key point is VS version? :)
A wild guess: did you ever apply any VS6 servicepack?
That's VS6 and if I remember well SP6 but can't find that in the about box :ehh:
Thx for the registry hint ! It tells me I indeed installed SP6.
SDKs for VS6 ? None I think ... can I also check that in registry ?
The only SDKs I have installed are 2.0 for .Net and 6.0A for Windows
but those are not relevant for this problem I presume.
Exactly the 2 SDKs that I mentioned.
Am I missing a crucial SDK for getting my IDL to compile correctly ?
Another key point: warning is not an error. :)
I've just checked it with VS6, it generates .tlb and proxy code alright (disregarding the warning). And with all subsequent VS versions it compiles just fine. :)
Despite the warning, I can now indeed pass 64bit values between COM dll and client app :)
Just 1 more question about the oleautomation attribute for the interface.
By just saying the interface is automation compatible, it doesn't actually make it so, right ?
Thx all :thumb:
oleautomation attribute
And yes, it's just an indicator. BTW, to fully comply with oleautomation you'd better go with VARIANT rather than LONGLONG.
Been looking into that, but couldn't quite figure out how to use VARIANTs for 64bit :blush:
Will investigate this suggestion further !