C++ 从VS 2008升级到VS 2015时出现编译错误

C++ 从VS 2008升级到VS 2015时出现编译错误,c++,visual-studio-2015,visual-studio-2008,C++,Visual Studio 2015,Visual Studio 2008,从VS2008升级到VS2015时,我在编译下面的代码时出错。代码来自com4j项目。需要帮助。谢谢 语法错误:缺少“;”在“之前,VARTYPE代表什么?它是宏吗?用class或typename替换可能会有帮助也许在XDUCER::JavaType之前删除typename会有帮助吗?不,不起作用。我很抱歉。模板参数太少..定义为:typedef unsigned short VARTYPE;上面这行是指一个宏:用于计算上述pClipData的大小的宏#定义CBPCLIPDATA(clipda

从VS2008升级到VS2015时,我在编译下面的代码时出错。代码来自com4j项目。需要帮助。谢谢


  • 语法错误:缺少“;”在“之前,
    VARTYPE
    代表什么?它是宏吗?用
    class
    typename
    替换可能会有帮助

    也许在
    XDUCER::JavaType
    之前删除
    typename
    会有帮助吗?不,不起作用。我很抱歉。模板参数太少..定义为:typedef unsigned short VARTYPE;上面这行是指一个宏:用于计算上述pClipData的大小的宏#定义CBPCLIPDATA(clipdata)((clipdata).cbSize-sizeof((clipdata.ulClipFmt))@OyvindFoshaug错误3表示
    数组
    不明确。是否包含多个名为
    array
    的名称空间或类?这是一个有效点。我将指定相关的名称空间。语法没有问题。
    array
    array
    SAFEARRAY
    的定义可能有问题。下面是我的简单定义示例。它很好用
    typedef unsigned short VARTYPE
    typedef int SAFEARRAY
    命名空间数组{template class array{T*T;};};}
    // Class to marshal SAFEARRAY to Java multi dimensional array
    //
    // itemType : array item type
    // XDUCER : converter for each array item
    template < VARTYPE itemType, class XDUCER >
    class ToJavaMultiDimlArrayMarshaller {
        typedef array::Array<typename XDUCER::JavaType> JARRAY; // Errors here
        typedef SAFEARRAY* NativeType;
        typedef jarray JavaType;