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

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#端怎么处理这个问题?

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

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

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