Типы параметров с использованием ATL - PullRequest
0 голосов
/ 16 февраля 2012

Я пытаюсь создать неуправляемую COM-библиотеку DLL с помощью ATL, которая отражает C # DLL, которую я ранее создал. Однако, когда я добавлял методы в интерфейс, я столкнулся с проблемой и не смог найти решение. Для иллюстрации приведу интерфейс, написанный на C #:

public unsafe interface IUserIDA
{
    [DispId(1)]
    void SwitchCriteria(ref double intensity, ref double minMass, ref double maxMass, ref bool selectIntensity, ref long numOfDepCycles);

    [DispId(2)]
    void ChargeStateParam(ref short minCharge, ref short maxCharge, ref bool doChargeState);

    [DispId(3)]
    void InclusionList(ref double intensity, ref double theList, ref short numOfItems);

    [DispId(4)]
    void ExclusionList(ref long exRTWindow, ref double theMassList, ref long theRTList, ref short numOfItems);

    [DispId(5)]
    void OtherCriteria(ref long smartFilterTime, ref double isoExclusionWin, ref double massTolerance, ref bool isPPM);

    [DispId(6)]
    void IsotopeMatchParam(ref double theMassList, ref double theAbundanceList, ref short numOfItems, ref  double abTolerance, ref double maTolerance);

    [DispId(7)]
    void InitIDA();

    [DispId(8)]
    void SurveySpec();

    [DispId(9)]
    void NextScan(double* selectedMasses, double* SelectedIntensities, long* selectedCharges, int itemCount);

}

Когда я попытался воспроизвести это в своем проекте ATL (с использованием Visual Studio 2008), я обнаружил, что ряд типов данных не указан: булевы и целочисленные типы. Какой тип следует использовать?

1 Ответ

0 голосов
/ 16 февраля 2012

boolean в c # - это действительно bool в C ++, и вы можете пойти по этому пути.Однако в стандартных интерфейсах COM вы должны использовать BOOL или LONG.То же самое для целых чисел.Используйте ДОЛГО.@ Travis дал вам хороший совет.В Visual Studio откройте окно «Представление класса» (из меню «Вид»), щелкните правой кнопкой мыши свой интерфейс и выберите «Добавить», а затем «Добавить метод» или «Добавить свойство».Это откроет хороший интерфейс, который проведет вас через определение интерфейса COM.

...