函数需要Flags来指示行为,C++中可以直接使用宏来解决,例如:
#define FNX_TTS_SYNTH_TOWAV         0x0000
#define FNX_TTS_SYNTH_TORAW         0x0001那么请问,在C#中如何表示?
        [Flags]
        enum TtsSynthTextFlags
        { 
            ToWaveFile=0,
            ToRamBuf=1
        }
声明了Flags,那么在创建托管函数原型时,是否应该在函数原型中使用TtsSynthTextFlags替换函数本身的Const Int?

解决方案 »

  1.   

    如果你要传递的是TtsSynthTextFlags类型的枚举值,那就需要在函数原型中使用TtsSynthTextFlags类型参数,不然的话,直接用int也可以。
      

  2.   

    直接在函数原型中使用TtsSynthTextFlags声明,编译提示说:
    Inconsistent accessibility: parameter type 'Import_Dll_Test1.Form1.TtsSynthTextFlags' is less accessible than method 'Import_Dll_Test1.Form1.FnxTtsSynthText(System.IntPtr, ref byte[], ref uint, string, Import_Dll_Test1.Form1.TtsSynthTextFlags)而使用int的话提示:
    Cannot implicitly convert type 'int' to 'bool'.郁闷了~~~