Linux上c#函数返回的奇怪bool值

时间:2017-02-23 04:32:35

标签: c# linux mono

在我的c#代码中,我有

Highcharts.chart('container', {

chart: {
    type: 'bubble',
    plotBorderWidth: 0,
    zoomType: 'xy'
},

title: {
    text: 'Highcharts bubbles with radial gradient fill'
},

xAxis: {
    gridLineWidth: 1
},

yAxis: {
    startOnTick: false,
    endOnTick: false
},

series: [{
    data: [
        [9, 81, 63],
        [98, 5, 89],
        [51, 50, 73],
        [41, 22, 14],
        [58, 24, 20],
        [78, 37, 34],
        [55, 56, 53],
        [18, 45, 70],
        [42, 44, 28],
        [3, 52, 59],
        [31, 18, 97],
        [79, 91, 63],
        [93, 23, 23],
        [44, 83, 22]
    ],
    marker: {
        fillColor: {
            radialGradient: { cx: 0.4, cy: 0.3, r: 0.7 },
            stops: [
                [0, 'rgba(255,255,255,0.5)'],
                [1, Highcharts.Color(Highcharts.getOptions().colors[0]).setOpacity(0.5).get('rgba')]
            ]
        }
    }
}, ]

 });

csfunction()使用pinvoke调用库中的c ++函数,该函数返回bool值ture。我用

$dt = Get-Date

Get-EventLog system -Before $dt -after "2/15/2017 8:27:50 PM" -LogName System

为bool值编组。这在单声道3.12上运行良好。但在我将单声道升级到4.6之后。

bool aBoolVar = csfunction(). 

仍然成功,但

[return: MarshalAs(UnmanagedType.U1)] 

经常失败。我将if (aBoolVar == true) 更改为bool值的其他两种类型,但它不起作用。我打印aBoolVal.Equals(true) 并且它是1.但是我仍然怀疑它不是1.我想使用DevelopMono来逐位检查UnmanagedType.U1的内存布局,但是我在安装时遇到了依赖性问题DevelopMono。

有人可以帮我弄清楚Convert.ToInt32(aBoolVar)失败的原因吗?如果有人有使用DevelopMono检查内存布局的良好经验,请告诉我。我将尝试安装DevelopMono并进行调试。

提前致谢。

qwang

0 个答案:

没有答案