January 27th, 2011, 09:03 AM
#1
INT64 in IDL
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 ...
error MIDL2025 : syntax error : expecting a type specification near "INT64"
Any suggestion ?
January 28th, 2011, 05:35 PM
#2
Re: INT64 in IDL
Best regards,
Igor
January 31st, 2011, 05:03 AM
#3
Re: INT64 in IDL
Thx for the hint but when using LONGLONG I get
Code:
warning MIDL2039 : interface does not conform to [oleautomation] attribute
The code in IDL is
Code:
[id(5), helpstring("method ParamTest")] HRESULT ParamTest([in] LONGLONG n64Input, [out] int* pResult);
January 31st, 2011, 09:40 AM
#4
Re: INT64 in IDL
Tested the following:
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;
};
};
Built with max error/warning level. Got not a single warning of the kind:
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
Attached Files
Best regards,
Igor
January 31st, 2011, 10:18 AM
#5
Re: INT64 in IDL
Running your makefile gives me
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' ) ]
Guess I'm missing a key point here !?!?
January 31st, 2011, 11:13 AM
#6
Re: INT64 in IDL
Maybe the key point is VS version?
A wild guess: did you ever apply any VS6 servicepack?
Best regards,
Igor
February 1st, 2011, 02:56 AM
#7
Re: INT64 in IDL
That's VS6 and if I remember well SP6 but can't find that in the about box
February 1st, 2011, 04:05 AM
#8
Re: INT64 in IDL
Originally Posted by
zvenny
That's VS6 and if I remember well SP6 but can't find that in the about box
VS6 "About box" does not contain any SP info.
Have a look at the registry key: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\6.0\ServicePacks
And did you install some SDK for VS6 (the last one was from Feb. 2003)?
Victor Nijegorodov
February 1st, 2011, 04:23 AM
#9
Re: INT64 in IDL
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.
February 1st, 2011, 04:29 AM
#10
Re: INT64 in IDL
Originally Posted by
zvenny
...
SDKs for VS6 ? None I think ... can I also check that in registry ?
Yes.
In HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MicrosoftSDK
Victor Nijegorodov
February 1st, 2011, 04:34 AM
#11
Re: INT64 in IDL
Exactly the 2 SDKs that I mentioned.
Am I missing a crucial SDK for getting my IDL to compile correctly ?
February 1st, 2011, 11:00 AM
#12
Re: INT64 in IDL
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.
Best regards,
Igor
February 3rd, 2011, 03:02 AM
#13
Re: INT64 in IDL
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
February 4th, 2011, 04:51 AM
#14
Re: INT64 in IDL
oleautomation attribute
And yes, it's just an indicator. BTW, to fully comply with oleautomation you'd better go with VARIANT rather than LONGLONG.
Best regards,
Igor
February 4th, 2011, 05:11 AM
#15
Re: INT64 in IDL
Been looking into that, but couldn't quite figure out how to use VARIANTs for 64bit
Will investigate this suggestion further !
Posting Permissions
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
Forum Rules
Click Here to Expand Forum to Full Width