FreeControl
FreeControl
采纳率66.7%
2020-04-23 11:09 阅读 285

C#调用C++的DLL(64位)(Debug版本和Release版本结果不同)

20

问题是这样的,一个C++封装的DLL(64位),返回的是一个结构Struct1的指针地址,
C++端是这样的
struct Struct1
{
int i1;
vector *pv1
}
struct Struct2
{
int i2;
vector *pv1
}
,现在的问题是C#端在调用C++的DEBUG版本DLL时可以解出正确值,但是在RELEASE版本时得不到正确值,首先可以肯定的是,DEBUG和RELEASE版本的D
LL都是正确的执行了,C#端怎么处理这个问题?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

3条回答 默认 最新

  • 已采纳
    d2262272d 窝米逗佛~ 2020-04-23 11:46

    vector最好就在c++那里转换成数组!
    c++ 的vector 是模板,c#的是泛类
    所以一般写跨语言接口的时候都是使用c的基本类型作为交互,避免出现对齐之类的问题

    点赞 评论 复制链接分享
  • qq_39554698 小学狗喵喵叫 2020-04-23 14:07

    初始化了再试一下,可能是地址被回收了

    点赞 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 2020-04-23 22:00

    RELEASE版本时得不到正确值
    应该是release不做内存清0操作,而你有指针越界或者没有初始化。

    点赞 评论 复制链接分享

相关推荐