none
C#如何调用C++ Dll传入指针,指向大结构体 RRS feed

  • 问题

  • C++结构体:

    typedef    struct    _CZYJK_comm_in_t
    {    
        BYTE transId[CZYJK_LEN_TRANS_ID_4 + 1];            //交易类型
        BYTE transCode[CZYJK_LEN_TRANS_CODE_6 + 1];        //交易处理码
        union
        {
            struct   
            {
                BYTE cardNo[CZYJK_LEN_CARDNO_19 + 1];                    //卡号    
                BYTE cardType[CZYJK_LEN_TYPE_1 + 1];                    //卡类型
                BYTE payType[CZYJK_LEN_PAY_TYPE_8 + 1];                    //支付方式
            }easyjoy_card_consume;

            struct   
            {
                BYTE cardType[CZYJK_LEN_TYPE_1 + 1];                    //卡类型
                BYTE payType[CZYJK_LEN_PAY_TYPE_8 + 1];                    //支付方式
                BYTE payableAmount[CZYJK_LEN_MONEY_12 + 1];                //应收金额
                BYTE realityAmount[CZYJK_LEN_MONEY_12 + 1];                //实收金额
            }easyjoy_card_stock_sell;
            
            struct   
            {
                BYTE cardNo[CZYJK_LEN_CARDNO_19 + 1];                    //卡号
                BYTE cardType[CZYJK_LEN_TYPE_1 + 1];                    //卡类型
                BYTE totalQuantity[CZYJK_LEN_QUANtITY_10 + 1];            //数量        
            }easyjoy_card_entity_sell;

            struct   
            {
                BYTE cardNo[CZYJK_LEN_CARDNO_19 + 1];                    //卡号
                BYTE transPin[CZYJK_LEN_CARD_PWD_32+1];                    //交易密码
            }recharge_card_verify;

            struct   
            {
                BYTE tradeCloseDate[CZYJK_LEN_DATE_TIME_14 + 1];        //日结日期
                  BYTE dailyStlType[CZYJK_LEN_DAILY_TYPE_4 + 1];            //日结类型
                  BYTE applyChannel[CZYJK_LEN_CHANNEL_2 + 1];                //申请渠道    
            }recharge_card_settledate;
            
            struct   
            {
                BYTE cardType[CZYJK_LEN_TYPE_1 + 1];                    //卡类型    

            }total_select;

        }data;

        BYTE reserve[256];                        //预留
    }CZYJK_comm_in_t;

    C++函数原型:

    extern "C" __declspec(dllexport) int All_Trade_Interface(char *Indata, char *Outdata)

    {

        CZYJK_comm_in_t ExIndata;
        CZYJK_comm_out_t ExOutdata;   

        memset(szBuff, 0x00, sizeof (szBuff));
        memset(&ExIndata,  0x00, sizeof (ExIndata));
        memset(&ExOutdata, 0x00, sizeof (ExOutdata));
        CopyStringSpaceTo0(Indata, (char *)&ExIndata, sizeof (ExIndata));

    }

    C#怎么定义结构体和怎样调用。谢谢各位了。

    2013年11月5日 9:09

答案