我正在尝试使用ATL创建一个非托管COM dll,它反映了我之前创建的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),我发现没有列出许多数据类型:布尔值和整数类型。应该使用什么类型?
答案 0 :(得分:0)
c#中的boolean确实是C ++中的bool,你可以这样做。但是,在标准COM接口中,您应该使用BOOL或LONG。 同上整数。使用LONG。 @Travis给了你很好的建议。在Visual Studio中,打开“类视图”窗口(从“视图”菜单中),右键单击界面,选择“添加”,然后选择“添加方法”或“添加属性”。这将打开一个很好的UI,它将指导您完成COM接口的定义。