CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C++ Builder >  Windows SDK/API

斑竹 各位高手帮忙看看 我的栈怎么乱了 在线等待

楼主zhao_as(火山)2003-06-04 17:44:27 在 C++ Builder / Windows SDK/API 提问

在写一个DLL   可是堆栈乱了   找不到原因   麻烦各位  
  dll的.h    
  #ifndef   __MYA_h__  
  #define   __MYA_h__  
  #include   <vcl.h>  
  #define   DLL_EXP   __stdcall   __declspec(dllexport)  
  extern   "C"   void   DLL_EXP   MyFunction(TDateTime   dpara1,int   ipara2);  
  #endif  
  dll的cpp  
  #include   <vcl.h>  
  #include   <windows.h>  
  #include   "MyA.h"  
  #pragma   hdrstop  
  #pragma   argsused  
   
  AnsiString   ConStr[]=  
  {  
  "One",  
  "Two"  
  };  
  AnsiString     UserStr;  
  BOOL   WINAPI   DllMain(HINSTANCE   hinstDLL,   DWORD   fwdreason,   LPVOID   lpvReserved)  
  {  
          return   1;  
  }  
  void   ExeFun()  
  {  
        ShowMessage(UserStr);  
  }  
  void   __stdcall   __declspec(dllexport)   MyFunction(TDateTime   dpara1,   int   ipara2)  
  {  
        UserStr   =   "This   is   a   Test";  
        UserStr   +=   DateTimeToStr(dpara1);  
        UserStr   +=   IntToStr(ipara2);  
        UserStr   +=   ConStr[0];  
        ExeFun();  
  }  
   
   
  用dll   的App  
  定义button   在click   event中  
  typedef   void   (*__stdcall   NewFun)(   int   ipara2);  
          NewFun   Function1;  
          HANDLE   GlobHandle=NULL;  
          GlobHandle   =   LoadLibrary("mydll.dll");  
          int   i;  
          if(GlobHandle)  
          {  
                  Function1   =   (NewFun)GetProcAddress(GlobHandle,"MyFunction");  
                  for(i=   0;   i<100;   ++i)  
                      Function1(TDateTime::GetCurrentTime(),i);  
                  /*这个循环不能执行100次,要么出错,要么i的值狂大*/  
                  FreeLibrary(GlobHandle);  
          }  
  帮忙!在线等待 问题点数:80、回复次数:4Top

1 楼zhao_as(火山)回复于 2003-06-04 17:46:06 得分 0

对不起  
  typedef   void   (*__stdcall   NewFun)(   int   ipara2);  
  应为  
  typedef   void   (*__stdcall   NewFun)(   TDateTime   dipara1,int   ipara2);Top

2 楼HUANG_JH(保卫钓鱼岛)回复于 2003-06-05 09:03:49 得分 40

函数定义要加extern   "C"  
   
  extern   "C"__declspec(dllexport)void   __stdcall   MyFunction(TDateTime   dpara1,   int   ipara2)  
   
  调用  
          typedef     void   __stdcall   TNewFun(   TDateTime   dipara1,int   ipara2);  
   
          HANDLE   GlobHandle=NULL;  
          GlobHandle   =   LoadLibrary("libdll.dll");  
          int   i;  
          if(GlobHandle)  
          {  
                  TNewFun   *Function1   =   (TNewFun   *)GetProcAddress(GlobHandle,   "MyFunction"   );  
                  for(i=   0;   i<100;   i++)  
                      Function1(Now(),i);  
                  FreeLibrary(GlobHandle);  
          }  
   
   
  没有问题,弹出了100个messageboxTop

3 楼FlySky01(飞云在天)回复于 2003-06-05 10:23:56 得分 40

HUANG_JH(致以革命同志的敬礼)   没有错  
  不过这样也行  
  #define   DLL_EXP   __stdcall   __declspec(dllexport)  
  extern   "C"   void   DLL_EXP   MyFunction(TDateTime   dpara1,int   ipara2);  
  把   void   移动到DLL_EXP   后面  
   
  定义时候不用任何修饰   ,只用在函数类型后加标准调用   __stdcall  
  既void   __stdcall   MyFunction(TDateTime   dpara1,int   ipara2){}  
  all   ok!  
  Top

4 楼zhao_as(火山)回复于 2003-06-05 13:42:29 得分 0

谢谢   谢谢!Top

相关问题

  • 希望斑竹帮助解答!!在线等待
  • 有点迷惑的问题,斑竹帮忙,各位帮忙!!!(在线等待)
  • 救命……(在线等待……, 问题解决请斑竹马上结贴!)
  • 孟斑竹帮忙! 在先等待
  • 100分 在线等待 如何保持设计期COM的属性值 请斑竹务必出面
  • 网吧救急◆◆◆斑竹请进◆◆◆各位CSDN的兄弟帮忙,急..急..急,在线等待!
  • 高分请教各位斑竹和高手,很急!很急!如果网络允许,在线等待!要交货了,呵呵!:)
  • 虚心请教各位高手和斑竹菜鸟级问题:怎么不能WaitForSingleObject(hEvent->Handle,0)???在线焦急等待!!!请各位知道的帮帮忙!谢谢!
  • 在线等待!立刻加分!有哪位仁兄开发过web parts,欲知详情请进...谢谢!斑竹storm97、xch74请来关心关心我吧!
  • 英文好的高手进来,帮帮小弟翻译一下,在线等待,解决问题立即给分!【斑竹留情,VC版高手多】

关键词

  • dll
  • userstr
  • ipara2
  • globhandle
  • dpara
  • newfun
  • mya
  • myfunction
  • stdcall
  • include

得分解答快速导航

  • 帖主:zhao_as
  • HUANG_JH
  • FlySky01

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

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