오류 C2440 : 'function': 'const iid'에서 'dword'로 변환 할 수 없습니다.

StackOverflow https://stackoverflow.com/questions/1351589

  •  20-09-2019
  •  | 
  •  

문제

CLR을 호스팅하려고하는 동안 계속해서 이것을 얻습니다.

오류 C2440 : 'function': 'const iid'에서 'dword'로 변환 할 수 없습니다.

내 코드 :

ICLRRuntimeHost *host = NULL;
HRESULT result = CorBindToRuntime(NULL, L"wks", CLSID_CLRRuntimeHost, 
    IID_ICLRRuntimeHost, (PVOID*)&host);

그건 그렇고 이것은 C에 있습니다. C ++가 아닙니다.

편집하다: C ++로 이것을 컴파일하면 잘 작동합니다. 어느 언어로든 동일하게 행동해서는 안됩니까?

도움이 되었습니까?

해결책

Guiddef.h에서 :

#ifndef _REFIID_DEFINED
#define _REFIID_DEFINED
#ifdef __cplusplus
#define REFIID const IID &
#else
#define REFIID const IID * __MIDL_CONST
#endif
#endif

#ifndef _REFCLSID_DEFINED
#define _REFCLSID_DEFINED
#ifdef __cplusplus
#define REFCLSID const IID &
#else
#define REFCLSID const IID * __MIDL_CONST
#endif
#endif

다시 말해, C ++에서는이 두 가지는 참조이며 C에서는 포인터입니다. 사용해야합니다.

ICLRRuntimeHost *host = NULL;
HRESULT result = CorBindToRuntime(NULL, L"wks", &CLSID_CLRRuntimeHost,
    &IID_ICLRRuntimeHost, (PVOID*)&host);

다른 팁

Corbindtoruntime의 마지막 매개 변수는 pvoid*가 아닌 lpvoid*로 정의됩니다. 아마도 그게 문제일까요?

HRESULT CorBindToRuntime (
        [in]  LPCWSTR     pwszVersion, 
        [in]  LPCWSTR     pwszBuildFlavor, 
        [in]  REFCLSID    rclsid, 
        [in]  REFIID      riid, 
        [out] LPVOID FAR  *ppv
);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top