CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  进程/线程/DLL

mfc的dll调用返回后主程序出错,大家帮忙看看

楼主wraith1234()2006-03-14 02:10:31 在 VC/MFC / 进程/线程/DLL 提问

代码如下:数据库方面已经测试,没问题,用的unicode编码.dll和主程序都支持mfc  
  dll的:  
  extern   "C"   __declspec(dllexport)   void   insert(CStringW   val[],   int   size)  
  {  
  AFX_MANAGE_STATE(AfxGetStaticModuleState());  
  DBOper   o;  
  o.Insert(val,   size);  
   
  }  
  BOOL   DBOper::Insert(CStringW   val[],   int   size)  
  {  
  CDaoRecordset   rTemp(&m_database);  
  rTemp.Open(AFX_DAO_USE_DEFAULT_TYPE,  
  L"SELECT   *   FROM   file",   0);  
  rTemp.AddNew();  
  for(int   i   =0;i<size;i++)  
  {  
  rTemp.SetFieldValue(i,(LPCTSTR)val[i]);  
  }  
  rTemp.Update();  
  rTemp.Close();  
  return   true;  
  }  
  主程序的:  
                                      CStringW   a[6]={"1","2","3","4","5","6"};  
  typedef   void   (WINAPI   *   Insert)(CStringW[],int);  
  HINSTANCE   hmod;  
  hmod   =   ::LoadLibrary   (L"DBHelper.dll");  
  if(hmod==NULL)  
  {  
  AfxMessageBox(L"fail");  
  }  
  Insert   lpproc;  
  lpproc   =   (Insert)GetProcAddress   (hmod,"insert");  
  if(lpproc!=(Insert)NULL)  
  (*lpproc)(a,6);//这里返回后报错  
                                          FreeLibrary(hmod);  
  这是错误信息  
  Run-Time   Check   Failure   #0   -   The   value   of   ESP   was   not   properly   saved   across   a   function   call.     This   is   usually   a   result   of   calling   a   function   declared   with   one   calling   convention   with   a   function   pointer   declared   with   a   different   calling   convention.  
  我还是新手,大家帮我一把,谢谢. 问题点数:50、回复次数:4Top

1 楼flyelf(空谷清音)回复于 2006-03-14 08:59:17 得分 25

typedef   void   (   *   Insert)(CStringW[],int);Top

2 楼wraith1234()回复于 2006-03-14 09:24:48 得分 0

试了一下,问题解决了.呵呵  
  顺便请问这里的typedef   void   (WINAPI   *   Insert)(CStringW[],int);中的WINAPI是什么意思Top

3 楼DentistryDoctor(不在无聊中无奈,就在沉默中变态)回复于 2006-03-14 19:37:29 得分 25

正说明问题:  
  调用约定的问题  
  WINAPI代表__stdcall,这在VC的头文件中有定义。Top

4 楼wraith1234()回复于 2006-03-14 22:20:33 得分 0

哦  
  自己再看看Top

相关问题

  • dll中怎样调用主程序中的函数?
  • 从DLL中调用主程序函数的问题
  • dll中怎么调用主程序中的全局变量阿?
  • DLL插件调用主程序对象的问题,先谢过
  • 主程序调用dll中创建窗体问题?
  • DLL调用出错的问题?结束主程序时非法操作!
  • 请问如何从含窗体的dll调用中返回主程序?
  • 送分100------怎样在dll(常规型)中调用主程序中的资源
  • 如何让调用的dll函数来改变主程序中变量的值?
  • BCB调用DELPHI 写的DLL的 退出主程序出错的问题

关键词

  • 主程序
  • rtemp
  • dboper
  • cstringw val
  • afx
  • insert
  • size

得分解答快速导航

  • 帖主:wraith1234
  • flyelf
  • DentistryDoctor

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo