CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C++ Builder >  基础类

如何动态调用DLL?

楼主ntxs(别人加薪我加班,数钱数到心发酸T_T)2004-09-04 02:46:45 在 C++ Builder / 基础类 提问

DLL   只有一个函数   大致是这样   int   P(int   X);   我想要动态调用它该怎么声明?  
  我只知道静态是   extern   "C"   .....  
   
  在主函数中我又怎么样才能动态调用它呢?  
  最好把三个函数都用上   LoadLibrary     GetProcAddress   FreeLibrary  
   
  问题点数:20、回复次数:4Top

1 楼Persistent8813(固执的,坚持的:山东诸城)回复于 2004-09-04 07:59:34 得分 7

//---------------------------------------------------------------------------  
   
  #include   <vcl.h>  
  #pragma   hdrstop  
   
  #include   "Unit7_8.h"  
  //---------------------------------------------------------------------------  
  #pragma   package(smart_init)  
  #pragma   resource   "*.dfm"  
  TForm1   *Form1;  
  extern   "C"   __declspec(dllimport)   void   __fastcall   CustomerForm(char   *st);  
  //---------------------------------------------------------------------------  
  __fastcall   TForm1::TForm1(TComponent*   Owner)  
                  :   TForm(Owner)  
  {  
  }  
  //---------------------------------------------------------------------------  
  void   __fastcall   TForm1::Button1Click(TObject   *Sender)  
  {  
   
      void   (*CustomerForm)(char   *);  
   
   
      HINSTANCE   hInst=LoadLibrary("pDelphiDLL.dll");  
   
   
      (FARPROC   &)CustomerForm=GetProcAddress(hInst,"CustomerForm");  
   
   
      CustomerForm(Edit1->Text.c_str());  
   
   
      FreeLibrary(hInst);  
  }  
  //---------------------------------------------------------------------------  
  Top

2 楼sunliwen780502(孙立文)回复于 2004-09-04 09:04:00 得分 7

typedef   __declspec(dllimport)   void     __stdcall   ExportType(TSaveDialog*   dia,   TQuickRep   *Rep);  
  ExportType   *LoadFunction;  
  HINSTANCE   Dll   =   LoadLibrary("ExportDataDLL.dll");  
          if   (Dll)  
          {  
                  LoadFunction   =   (ExportType*)GetProcAddress(Dll,   "ExportData");  
                  if   (LoadFunction)  
                          LoadFunction(SaveDialog1,   Form2->QuickRep1);  
                  else  
                          ShowMessage(SysErrorMessage(GetLastError()));  
                  //free   Library  
                  FreeLibrary(Dll);  
          }  
   
          else  
          {  
                  ShowMessage(SysErrorMessage(GetLastError()));  
                  ShowMessage("Unable   to   load   Dll");  
          }Top

3 楼weixing979(★★★闪电侠★★★)回复于 2004-09-04 09:49:25 得分 5

楼上两位的代码就可以了。不明白的话可以看下下面的文章  
  http://blog.csdn.net/behard/archive/2003/06/04/8681.aspx  
  Top

4 楼binbin(破坏分子)回复于 2004-09-04 13:32:16 得分 1

同意.Top

相关问题

  • 如何动态调用DLL?
  • 如何动态来调用 dll文件。
  • DLL动态调用!
  • 怎样调用DLL啊?(动态调用)
  • VC作ACTIVEX中如何用DLL,要求动态调用,??
  • 如何动态调用dll中的类的函数
  • 如何调用一个。DLL的动态连接库?
  • C++ Builder 如何调用动态连接库(*.DLL)中的函数
  • c中如何调用dll动态链接库?
  • 在delphi中如何调用VB写的dll动态链接库

关键词

  • 函数
  • dll
  • customerform
  • 动态调用
  • tform
  • hinst
  • fastcall
  • pragma

得分解答快速导航

  • 帖主:ntxs
  • Persistent8813
  • sunliwen780502
  • weixing979
  • binbin

相关链接

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

广告也精彩

反馈

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