debug版本的DLL调用release版本的DLL引发的一个问题
Posted bigfi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了debug版本的DLL调用release版本的DLL引发的一个问题相关的知识,希望对你有一定的参考价值。
stl的常用结构有 vector、list、map等。
今天碰到需要在不同dll间传递这些类型的参数,以void*作为转换参数。
比如 DLL2 的接口 add(void*pVoid);
1.在DLL1中调用该接口,
struct st_headerTerminalRes
{
st_headerTerminalRes(){id=0;}
int id;
int type;//restype 1=mc 2=camera
int resId;
int headerId;
};
typedef vector<st_headerTerminalRes> ltHeaderres;
ltHeaderres ltRes;
add((void*)(<Res));
2.在DLL2中
ltHeaderres ltRes = *(ltHeaderres *)pVoid; 在此处报错
如果DLL1和DLL2都是release或都是debug版本,调用是不会报错的。
而本人用的是debug的DLL1,调用release的DLL2。导致在该行报错。
所以在DLL互相调用的时候,一定要统一版本。混合调用很容易出现奇怪的问题。
以上是关于debug版本的DLL调用release版本的DLL引发的一个问题的主要内容,如果未能解决你的问题,请参考以下文章