代码之家  ›  专栏  ›  技术社区  ›  Andrew Truckle

COM接口能否返回整数而不是长整数?

  •  0
  • Andrew Truckle  · 技术社区  · 7 年前

    [Guid("xx")]
    [ComVisible(true)]
    [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    public interface IStudentItem
    {
        string Type { get; set; }
        DateTime Week { get; set; }
        int Study { get; set; }
    }
    
    [Guid("yy")]
    [ClassInterface(ClassInterfaceType.None)]
    [ComVisible(true)]
    public class StudentItem : IStudentItem
    {
        public string Type { get; set; }
        public DateTime Week { get; set; }
        public int Study { get; set; }
    }
    

    正如你所见, Study 定义为 int .

    long :

    long lStudyNumber = 0;
    if(SUCCEEDED(studentItem->get_Study(&lStudyNumber)))
        oEntry.iStudyPoint = static_cast<int>(lStudyNumber);
    

    我的DLL有86x和64x两个版本。有没有办法拿到 get_Study 属性返回 integer

    1 回复  |  直到 7 年前
        1
  •  1
  •   xMRi    7 年前

    你为什么想要这个。使用对所有操作系统和位中的数据有意义的适当类型。

    您可以在MIDL编译器和TLB(类型库)中使用int.COMs知道_uint3264类型,甚至一个变体也有VT\u int类型。