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 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog