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
  • 3896

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

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

用VS制作简单dll的过程 C和c++版本

创建dll的过程其实并不难,但是MDN上明确表示对于C++制作的dll支持的不好,因此要使用的dll必须是C语言规范的,于是我就打算用VC6.0来做这个dll。做了整整一下午,不断的查阅资料,终于还是...
  • txpp520
  • txpp520
  • 2017年05月18日 23:54
  • 449

让你的.NET程序兼容不同版本的Dll文件。

前段时间写的一个WinForm的.NET程序。因为引用了不少的库文件,但是最近这些库文件因为修正了一些Bug和算法。但是主的程序文件没有怎么改动。所以就不像把这个主程序重新编译了。于是就把所有的新版D...
  • firewing
  • firewing
  • 2005年03月19日 15:38
  • 988

VC的DLL加载方法

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

VC++创建和调用dll

VC++创建和调用dll在工程应用中,动态链接库(dll)的重要性和灵活性是不言而喻的,这里将介绍一种最基本的创建和调用dll的方法,下面是使用VC++6.0的实现过程: 1. 创建...
  • cheng_xingxing
  • cheng_xingxing
  • 2015年09月16日 20:14
  • 1711

延迟加载Dll的实现原理

延迟加载Dll的实现原理 一. 简介 延迟加载Dll是一个混合方式,它通过LoadLirary和GetProcAddress获得延迟加载函数的地址,然后直接转向对延迟加载函数的调用。 ...
  • chenglinhust
  • chenglinhust
  • 2013年01月06日 00:03
  • 1448

精易模块[永久免费] V3.12

  • 2012年07月22日 23:28
  • 311KB
  • 下载

VC++调用dll的方法

调用DLL有两种方法:静态调用和动态调用. (一).静态调用其步骤如下: 1.把你的youApp.DLL拷到你目标工程(需调用youApp.DLL的工程)的Debug目录下; 2.把你的youA...
  • sunyuzhe114
  • sunyuzhe114
  • 2011年12月23日 08:35
  • 2766

vc++ 调用外部dll的方法

调用DLL有两种方法:静态调用和动态调用. (一).静态调用其步骤如下: 1.把你的youApp.DLL拷到你目标工程(需调用youApp.DLL的工程)的Debug目录下; 2.把...
  • gaoszzzz
  • gaoszzzz
  • 2017年08月15日 11:09
  • 271
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:VC动态调用DLL
举报原因:
原因补充:

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