문제

G'day 모두

나는 C ++에 초보자이고 Borland Turbo C ++ Explorer에 더욱 그렇습니다. 방금이 컴파일 오류가 발생했습니다. 그것을 고치는 방법에 대한 단서가 있습니까?

[C++ Error] comsvcs.h(3209): E2015 Ambiguity between 'ITransaction' and 'Oledb::ITransaction'
[C++ Error] comsvcs.h(3275): E2015 Ambiguity between 'ITransaction' and 'Oledb::ITransaction'
[C++ Error] comsvcs.h(16197): E2015 Ambiguity between 'ITransaction' and 'Oledb::ITransaction'
[C++ Error] comsvcs.h(16293): E2015 Ambiguity between 'ITransaction' and 'Oledb::ITransaction'

첫 번째 코드가 발생하는 코드입니다

EXTERN_C const IID IID_ICreateWithTransactionEx;

#if defined(__cplusplus) && !defined(CINTERFACE)

    MIDL_INTERFACE("455ACF57-5345-11d2-99CF-00C04F797BC9")
    ICreateWithTransactionEx : public IUnknown
    {
    public:
    virtual /* [helpstring][helpcontext] */ HRESULT STDMETHODCALLTYPE CreateInstance(
        /* [in] */ ITransaction *pTransaction,
        /* [in] */ REFCLSID rclsid,
        /* [in] */ REFIID riid,
        /* [iid_is][retval][out] */ void **pObject) = 0;

    };

다른 출처의 몇 가지 제안 :

컴파일러의 오류 메시지에 따르면 컴파일 장치의 범위에 Itransaction 데이터 유형의 2 개의 선언이 있습니다. Itransaction 정의는 Microsoft의 comsvcs.h에서 나오고 OLEDB :: itransaction은 Borland의 Itransaction 인터페이스를 구현 한 것 같습니다. 그래서 당신은 두 가지를 시도 할 수 있습니다.

  1. OLEDB :: ITRANSACTION 정의를 제거하십시오 (Turbo C ++를 알지 못하지만 OLEDB를 다루는 구성 요소가있을 수 있습니다. 이것을 제거하십시오. 또는 다른 #include를 사용하여 포함될 수 있습니다. OLEDB :: 텍스트를 검색하십시오. 포함 된 디렉토리의 Itransaction은 희망적으로 관련 파일을 찾을 수 있습니다. 더 이상 포함되지 않도록 포함 경로를 수정하십시오).
  2. CONTERFACE를 정의하려고 시도 할 수 있습니다. Compile 오류를 초래 한 코드가 정의 된 경우 포함되지 않으므로 Cinterface를 정의하려고 시도 할 수 있습니다. 그러나 그것은 다른 문제를 일으킬 수 있습니다 ...

다른 제안이 있습니까?

친절한 안부, 브루스.

도움이 되었습니까?

해결책

나는 com을하는 방법이나 당신의 itransaction이 무엇인지에 대한 단서가 없지만, 당신의 범위에는 두 가지 itransaction 유형이 포함 된 것처럼 보입니다. 기능 프로토 타입에서 더 명확하게 할 수 있습니까? 사용하려는 Itransaction을 범위로 삼을 수 있습니까? ":: itransaction"(글로벌 네임 스페이스 사용) 또는 "some_other_namespace :: itransaction"이라고 말합니까?

다른 팁

좋아요, 우리는 어떻게 든이 질문을 닫아야합니다. 최신 패치로 터보 C ++ 탐색기를 업데이트 한 후 문제가 사라졌습니다.

그 과정에서 제안을 제공 한 모든 분들께 감사드립니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top