Есть ли способ с помощью MIDL отключить генерацию заголовков в стиле C? - PullRequest
2 голосов
/ 06 июня 2011

У меня есть простой файл .IDL (iface.idl), который описывает интерфейс на основе IUnknown:

import "unknwn.idl"; 
[
    uuid(80DFDD28-F033-431e-B027-CDD2078FC78A)
]
interface ISunPathCalc : IUnknown {
    HRESULT Square([in, out] long * pVal);
    HRESULT Cube([in, out] long * pVal);
};

При попытке скомпилировать его с midl /header iface.h iface.idl я получаю 3 файла: iface.h, iface_i.c и iface_p.c.Файл iface.h содержит объявление C ++ об интерфейсе ISunpathCalc:

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

    MIDL_INTERFACE("80DFDD28-F033-431e-B027-CDD2078FC78A")
    ISunPathCalc : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE Square( 
            /* [out][in] */ long *pVal) = 0;

        virtual HRESULT STDMETHODCALLTYPE Cube( 
            /* [out][in] */ long *pVal) = 0;

    };

#else   /* C style interface */

Оставшаяся большая часть этого файла содержит ненужные файлы языка C.

Q: Естьспособ сказать MIDL генерировать только часть C ++ заголовка?Можно ли отключить генерацию файлов iface_i.c и iface_p.c и заставить MIDL вместо этого генерировать определение C ++?

UPD1:

Я пыталсядобавить атрибут [local] как указано здесь :

[
    local,
    uuid(80DFDD28-F033-431e-B027-CDD2078FC78A)
]

, но безуспешно.

1 Ответ

3 голосов
/ 01 июля 2011

К сожалению, нет способа подавления генерации заголовка C.

...