dll静态调用错误 我用C++写了一个DLL在调用的时候不出错,但在调用过程执行完后出错:read address of 0x00000001请教怎么解决?(动态调用时不出错,但我需要静态调用) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 代码都正常的不能再正常了,在一个过程里*静态*调用,调用不出错的,到调用过程运行到end的地方出错。 而且,原来用delphi写的dll不会出错的,这回用c++写了,用delphi调用就出错了。 估计就是调用约定的问题了,加个stdcall,C和Pascal的参数默认压栈方式正好相反 釋放出問題,檢查你的dll的釋放處理部分!! 也许调用的时候用CDECL的方式; 可能参数约定不同。加个stdcall吧。 可能参数约定不同,c++,delphi两边都要加stdcall C++动态连接库:#define DllImport extern "C" __declspec(dllimport)DllExport int EYC_Ent_ReadRec(int nDevID, ComStru Com, pEntRec pEr);(实现部分有点长,是读取门禁记录的,不方便贴,我感觉不会错在里面)Delphi里: function EYC_Ent_ReadRec(nDevID: Integer; Com: ComStru; pEr: pEntRec): Integer; stdcall;external 'EYICCOM.dll' name 'EYC_Ent_ReadRec'; DllExport int __sdtcall EYC_Ent_ReadRec(int nDevID, ComStru Com, pEntRec pEr); sorry!!DllExport int __stdcall EYC_Ent_ReadRec(int nDevID, ComStru Com, pEntRec pEr); 请问大虾:KEYDOWN消息怎么捕捉不到四个方向按键呢?? 求助:有关DBGRID中实现复选框的问题? dbgrid问题,谢谢 高手请进!!!!我要将一个表中的数据导到另一个表中,要求速度,数据量很大 在adoquery的connect中怎樣能顯示出Dm中的連接? 窗体显示的问题??急用呀?、在线关注?? 求助,memo中的文字怎么打印啊? 老兄,来搞搞第三方控件吧!!!!!!!!!!!呵呵!!!!!!!! 关于directX的一个小问题。 改变无边框窗体的大小 报告系统错误(在线) 身份证扫描难题,请求大虾们帮忙,谢谢!
加个stdcall吧。
#define DllImport extern "C" __declspec(dllimport)
DllExport int EYC_Ent_ReadRec(int nDevID, ComStru Com, pEntRec pEr);
(实现部分有点长,是读取门禁记录的,不方便贴,我感觉不会错在里面)Delphi里:
function EYC_Ent_ReadRec(nDevID: Integer; Com: ComStru; pEr: pEntRec): Integer; stdcall;external 'EYICCOM.dll' name 'EYC_Ent_ReadRec';
DllExport int __stdcall EYC_Ent_ReadRec(int nDevID, ComStru Com, pEntRec pEr);