FreeControl
2020-04-23 11:09
采纳率: 66.7%
浏览 329

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

问题是这样的,一个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条回答 默认 最新

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

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

    点赞 打赏 评论
  • 小学狗喵喵叫 2020-04-23 14:07

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

    点赞 打赏 评论
  • blownewbee 2020-04-23 22:00

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

    点赞 打赏 评论

相关推荐 更多相似问题