静态加载dll和动态加载dll

原创 2012年03月26日 11:23:16

一,首先编写DLL (建win32空DLL工程)

头文件.h

 

extern "C" _declspec(dllexport) int Max(int a, int b);         //extern "C"解决函数名由于不同编译器造成的名字匹配问题,通常c++编译器编译时会对函数进行改名,而c编译器不会
extern "C" _declspec(dllexport) int Min(int a, int b);         //_declspec(dllexport)说明该函数为导出函数

 

实现文件.cpp

#include"TestDLL.h"
int Max(int a, int b)
{
 return (a > b?a:b);
}
int Min(int a, int b)
{
 return (a > b?b:a);
}

 

二,编程测试DLL的工程(建win32 空工程)

1,静态加载dll

a。将dll工程下的dll和lib文件拷到测试工程下

b。同时编写头文件.h

extern "C" _declspec(dllimport) int Max(int a, int b);           //_declspec(dllimport)说明函数为导入函数
extern "C" _declspec(dllimport) int Min(int a, int b);

c。编写实现文件.cpp

#include "test.h"
#include <iostream>
using namespace std;
#pragma comment(lib,"TestDLL001.lib")
int main()
{
 int a=Min(3,4);
 cout<<a<<endl;
 system("pause");
 return 0;
}

 

2.动态加载dll(仅用包含dll文件,同时不需要.h文件和lib文件)

a。将dll工程下的dll文件拷贝到测试工程下

b。编写实现文件.cpp

#include <Windows.h>                  // 包含 HINSTANCE
#include <iostream>
using namespace std;

int main()
{
 HINSTANCE his = LoadLibraryA("TestDLL001.dll");                    //用于加载dll
 typedef int(*pmin)(int a, int b);         
 pmin mmi=(pmin)GetProcAddress(his, "Min");                  //GetProcAddress()用于获得函数地址
 int aa=mmi(3,4);
 cout<<aa<<endl;
 FreeLibrary(his);                                                   //释放dll
 system("pause");
 return 0;
}

 

 

 

 

 

 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

静态链接库(LIB)和动态链接库(DLL),DLL的静态加载和动态加载,两种LIB文件。

静态链接库(LIB)和动态链接库(DLL),DLL的静态加载和动态加载,两种LIB文件。 一、 静态链接库(LIB,也简称“静态库”)与动态链接库(DLL,也简称“动态库”)的区别     静...
  • iw1210
  • iw1210
  • 2014-06-09 20:39
  • 9387

MFC静态加载dll和动态加载dll示例

一、静态加载DLL  函数的定义和使用方法: 第一步:    运行AppWizard,定义项目名为mydll,选择MFC AppWizard(dll),而不是MFC AppWizards(exe...
  • shufac
  • shufac
  • 2014-05-08 23:41
  • 1901

c语言怎么调用dll文件

from:http://zhidao.baidu.com/question/479621352.html   dll调用: (1)一般动态链接库有头文件声明h文件,lib,dll;这三个文件都用...

C#调用C/C++ 动态链接库DLL(三)

2。 在C#中创建DLL接口的声明 C#没有全局函数,必须使用静态函数实现全局函数。 1)  DllImport类似C++中的__declspec(dllimport),第一个参数为必选参数,为D...
  • Nocky
  • Nocky
  • 2012-06-24 15:24
  • 15573

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

VC中生成DLL的办法见: www.codeproject.com/KB/DLL/RegDLL.aspx VC中使用DLL http://www.cnblogs.com/c1230v/art...

C#使用C/C++编译的动态链接库dll

C#使用C/C++编译的动态连接库

C语言创建动态dll,并调用该dll(visual studio 2013环境下)

C语言创建动态dll,并调用该dll(visual studio 2013环境下)

C++调用DLL有两种方法——静态调用和动态调用

[C++]调用DLL有两种方法——静态调用和动态调用 (一).静态调用其步骤如下: 1.把你的youApp.DLL拷到你目标工程(需调用youApp.DLL的工程)的Debug目录下; 2.把你...
  • zzxian
  • zzxian
  • 2011-09-09 09:49
  • 26990

C#调用DLL的几种方法,包括C#调用C\C++\C#DLL

C#中dll调用方法 一、      DLL与应用程序 动态链接库(也称为DLL,即为“Dynamic Link Library”的缩写)是Microsoft Windows最重要...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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