2012-02-16 13 views
0

以前作成したC#dllをミラーリングするATLを使用してアンマネージCOM dllを作成しようとしています。しかし、インタフェースにメソッドを追加するときに、問題を見つけて解決策を見つけることができませんでした。私はC#で記述されたインタフェースが含まれます説明するために:私は(のVisual Studio 2008を使用して)私のATLプロジェクトでこれを再現しようとするとATLを使用するパラメータのタイプ

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); 

}

を私は多くのデータ型がないことを発見しましたリストされた:ブール型と整数型。どんなタイプを使うべきですか?

+0

または私は何かが不足しているか、それほど些細なことです:c#のブール値はC++のboolであり、c#の整数はC++のintです。あなたが求めているのは本当ですか? – Flot2011

+0

@ Flot2011メソッドの追加オプションを試してみると、パラメータタイプを選択するためのメニューがありますが、bool *またはint *が表示されません。 variant_boolがありますが、それは異なって定義されていると思います。 – Travis

+0

私はVisual Studioを大変使い慣れていません。これはCOMとATLを初めて使用したときです。私は単純にintまたはboolを使うことができますが、私は知らないし、可能性のあるタイプのリストの省略のために懸念していました。 – Travis

答えて

0

C#のブール値は実際にはC++ではboolなので、そうすることができます。ただし、標準COMインターフェイスでは、BOOLまたはLONG​​を使用する必要があります。 同値は整数です。 LONGを使用します。 @Travisは良いアドバイスをくれました。 Visual Studioで、 'View'メニューの 'Class View'ウィンドウを開き、インターフェース上で右クリックし、Addを選択し、Add MethodまたはAdd Propertyを選択します。それは、COMインターフェイスの定義を通してあなたを導く素敵なUIを開きます。

+0

ありがとう@Uni。それは実際に私がインターフェイスにメソッドを追加していた方法です。理由のためにパラメータタイプリストに載っていなかったか、ベストプラクティスが何であったかを示す文献は見つけられませんでした。 – Travis

関連する問題