LEOXI82 2015-08-11 03:58 采纳率: 0%
浏览 1707

关于C#调用C++dll的问题

在c#调用dll中遇到了个巨坑,请大侠&大神帮忙
c++定义:
//! 长度为10的字符串
typedef char TAPISTR_10[11];
typedef char TAPICHAR;
typedef char TAPIDTSTAMP[24];

//! int 32
typedef int TAPIINT32;
//! unsigned 32
typedef unsigned int TAPIUINT32;
//! int 64
typedef long long TAPIINT64;
//! unsigned 64
typedef unsigned long long TAPIUINT64;
//! unsigned 16
typedef unsigned short TAPIUINT16;
//! unsigned 8
typedef unsigned char TAPIUINT8;
//! real 64
typedef double TAPIREAL64;

typedef TAPIREAL64 TAPIQPRICE;
typedef TAPIUINT64 TAPIQVOLUME;
typedef TAPIINT64 TAPIQDIFF;

struct TapAPICommodity
{
TAPISTR_10 ExchangeNo;

TAPICommodityType CommodityType;

TAPISTR_10 CommodityNo;

};

struct TapAPIContract
{
TapAPICommodity Commodity;

TAPISTR_10 ContractNo1;

TAPISTR_10 StrikePrice1;

TAPICallOrPutFlagType CallOrPutFlag1;

TAPISTR_10 ContractNo2;

TAPISTR_10 StrikePrice2;

TAPICallOrPutFlagType CallOrPutFlag2;

};

struct TapAPIQuoteWhole
{
TapAPIContract Contract;

TAPISTR_10 CurrencyNo;

TAPICHAR TradingState;

TAPIDTSTAMP DateTimeStamp;

TAPIQPRICE QPreClosingPrice;

TAPIQPRICE QPreSettlePrice;

TAPIQVOLUME QPrePositionQty;

TAPIQPRICE QOpeningPrice;

TAPIQPRICE QLastPrice;

TAPIQPRICE QHighPrice;

TAPIQPRICE QLowPrice;

TAPIQPRICE QHisHighPrice;

TAPIQPRICE QHisLowPrice;

TAPIQPRICE QLimitUpPrice;

TAPIQPRICE QLimitDownPrice;

TAPIQVOLUME QTotalQty;

TAPIQPRICE QTotalTurnover;

TAPIQVOLUME QPositionQty;

TAPIQPRICE QAveragePrice;

TAPIQPRICE QClosingPrice;

TAPIQPRICE QSettlePrice;

TAPIQVOLUME QLastQty;

TAPIQPRICE QBidPrice[20];

TAPIQVOLUME QBidQty[20];

TAPIQPRICE QAskPrice[20];

TAPIQVOLUME QAskQty[20];

TAPIQPRICE QImpliedBidPrice;

TAPIQVOLUME QImpliedBidQty;

TAPIQPRICE QImpliedAskPrice;

TAPIQVOLUME QImpliedAskQty;

TAPIQPRICE QPreDelta;

TAPIQPRICE QCurrDelta;

TAPIQVOLUME QInsideQty;

TAPIQVOLUME QOutsideQty;

TAPIQPRICE QTurnoverRate;

TAPIQVOLUME Q5DAvgQty;

TAPIQPRICE QPERatio;

TAPIQPRICE QTotalValue;

TAPIQPRICE QNegotiableValue;

TAPIQDIFF QPositionTrend;

TAPIQPRICE QChangeSpeed;

TAPIQPRICE QChangeRate;

TAPIQPRICE QChangeValue;

TAPIQPRICE QSwing;

TAPIQVOLUME QTotalBidQty;

TAPIQVOLUME QTotalAskQty;

};

请问TapAPIContract怎么转换成C#的对应类型,我转换的时候已经成功转换了char数组。字符显示正常,但是double和long等数值类的类型全都不对。急急急~

  • 写回答

3条回答 默认 最新

  • Robot-S 2015-08-11 04:10
    关注

    同事遇到一个问题,C#调用c++的接口,返回值总是错误,但是c++的同事单步调试时正确的
    经过半天调试才发现,是C++接口定义的问题

    c++接口返回值定义为了bool。在x86平台c++中的bool占用1个字节,C#中占用4个字节

    在编译器默认的对其方式下,调用出现了混乱

    解决办法:c++接口不使用bool改为BOOL或者int等......
    答案就在这里:C#调用C++的dll问题
    ----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?

    评论

报告相同问题?

悬赏问题

  • ¥15 链接问题 C++LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题
  • ¥15 Python时间序列如何拟合疏系数模型
  • ¥15 求学软件的前人们指明方向🥺
  • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接