VC动态调用DLL

原创 2005年07月11日 13:19:00

1.生成DLL

CDLLApp theApp;
extern "C" _declspec(dllexport) int ADD(int i)
{
 AFX_MANAGE_STATE(AfxGetStaticModuleState());
 return ++i;

}

//////////////////////////////////////////////////////////////////////////////////////////////////////

extern "C" _declspec(dllexport) char* SendMess(char* buffer, int length)

{

////调用的时候要先给BUFFER分配内存(NEW())不然会出10014的错误.

10014--------------------系统检测到在一个调用中尝试使用指针参数时的无效指针地址。

}

////////////////////////////////////////////////////////////////////////////////////////////////////

2.动态调用DLL

void CTestDlg::OnBtest()
{
  
 UpdateData(true);
 

 typedef int(_cdecl *Connect)(int i);
 HINSTANCE hinstDLL=NULL;
 hinstDLL=LoadLibrary("TEST.dll");
 if (hinstDLL)
 {
  Connect Proc;
  Proc = (Connect)GetProcAddress (hinstDLL,"ADD");
  int iValue = Proc(m_i);
  FreeLibrary(hinstDLL);

 }
 else
 {
  AfxMessageBox("没找到dll");
 }
}

3.在DELPHL中的调用方法

procedure TForm1.Button1Click(Sender: TObject);
type
TIntFunc=function(i:integer):integer;stdcall;
var
Th:Thandle;
Tf:TIntFunc;
Tp:TFarProc;
begin
Th:=LoadLibrary('TEST.dll'); {装载DLL}
if Th>0 then
try
Tp:=GetProcAddress(Th,PChar('ADD'));
if Tp<>nil
then begin
Tf:=TIntFunc(Tp);
Edit1.Text:=IntToStr(Tf(1)); {调用TestC函数}
end
else
ShowMessage('ADD函数没有找到');
finally
FreeLibrary(Th); {释放DLL}
end
else
ShowMessage('TEST.dll没有找到');
end;

相关文章推荐

用vc++动态加载dll

 //同时该头文件也是动态调用动态连接库的比较合适的实   ////例,initCommDll()必须在调用扩展函数前调用//author liujinqiang          ////2006-...
  • ljq900
  • ljq900
  • 2007年05月19日 17:08
  • 3683

VC 动态调用DLL接口

//-------------IGDPrint.h文件代码 #ifndef _IGDPRINT_H_ #define _IGDPRINT_H_ //dll导出类 //dll跟其使用者共用的...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

利用VC调用动态链接库中的函数

[导读]自从微软推出16位的Windows操作系统起,此后每种版本的Windows操作系统都非常依赖于动态链接库(DLL)中的函数和数据,实际上Windows操作系统中几乎所有的内容都由DLL以一种或...

VC的DLL加载方法

 VC调用DLL2009年08月14日 星期五 下午 03:07调用DLL,首先需要将DLL文件映像到用户进程的地址空间中,然后才能进行函数调用,这个函数和进程内部一般函数的调用方法相同。Window...
  • yu444
  • yu444
  • 2009年10月26日 10:21
  • 27013

VC中怎么加载静态和动态链接库

调用DLL,首先需要将DLL文件映像到用户进程的地址空间中,然后才能进行函数调用,这个函数和进程内部一般函数的调用方法相同。Windows提供了两种将DLL映像到进程地址空间的方法: 1. 隐式的加...

VC中使用动态链接库DLL:静态调用和动态调用

VC中生成DLL的办法见: www.codeproject.com/KB/DLL/RegDLL.aspx VC中使用DLL http://www.cnblogs.com/c1230v/art...
  • HiRuyue
  • HiRuyue
  • 2013年06月05日 14:32
  • 3035

用VC++封装自己的DLL动态链接库

2011-07-20 13:38:11|  分类: C语言C++知识|举报|字号 订阅 初学vc就要自己封装动态库,我是用c写的程序代码,在网上找了半天,发现vc++...

VC++编写DLL供C#使用

介绍了静态链接库和动态链接库,已经如何编写和使用。
  • cc_net
  • cc_net
  • 2010年06月07日 15:59
  • 7449

VC、GCC 之间DLL 的相互调用

2012-08-30 15:56:51|  分类: GCC VC Dll相互调|字号 订阅 http://argv.info/2011/01/26/some-prob...
  • funkri
  • funkri
  • 2013年01月28日 21:06
  • 4402
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:VC动态调用DLL
举报原因:
原因补充:

(最多只允许输入30个字)