DLL动态链接库的生成:

首先打开VS2012,新建——项目——Win32控制台应用程序(项目名称:ConsoleApplication1)——空项目

新建一个源文件source.cpp

先用控制台exe配置类型自己定义函数,并通过主函数调试

然后可以通过项目——属性——配置属性——常规——项目默认值——配置类型下

选择动态库(.dll)选项

然后点击Build,会在工程的Debug目录下生成一个DLL文件(ConsoleApplication1.dll)

extern "C" _declspec(dllexport) void myFun();

#include "iostream"
using namespace std;
void myFun()
{
cout<<"Hello world"<<endl;
}
int main()
{
myFun();
return ;
}

VS2012 DLL动态链接库的调用

首先建立一个win32控制台的空项目,自己建立一个源文件source.cpp

添加头文件include<windows.h>

定义一个函数指针类型 typedef void (*DLLFUN)();(注意返回值类型,参数顺序类型都要一样)

然后通过HINSTANCE hdll;创建一个实例句柄

hdll = LoadLibrary("xxxx.dll");    //加载动态库

【这里字符串类型是LPSTR,当是unicode字符集的时候会不行,因此要在工程--属性--常规---默认字符集:把“unicode”改成支持多字符扩展即可】

然后定义一个函数地址变量 DLLFun myFun1;

myFun1 = (DllFun)GetProcAddress(hdll,"myFun");获取动态库里面的myFun函数的入口地址

然后myFun1();调用即可

最后释放内存

FreeLiabrary(hdll);

#include"iostream"
#include "windows.h"
#include "time.h"
using namespace std; typedef void (*DllFun)();
int main()
{ HINSTANCE hdll;
hdll = LoadLibrary("E:\\C++DLL_LIB\\ConsoleApplication1\\Debug\\ConsoleApplication1.dll");
if(hdll == NULL)
{
FreeLibrary(hdll);
cout<<"Dll loaded is fail..."<<endl;
getchar();
return -;
}
DllFun myFun1;
myFun1 = (DllFun)GetProcAddress(hdll,"myFun");
if(myFun1 == NULL)
{
FreeLibrary(hdll);
cout<<"DLLaddress loaded is fail..."<<endl;
getchar();
return -;
}
myFun1();
FreeLibrary(hdll);
return ;
}

C++(VS2012)DLL动态库的生成和调用的更多相关文章

  1. 嵌入式开发之makefile---交叉编译静态库和动态库的生成和调用

    c和cpp 混合的动态库生成: $(LIBSO): $(COBJS) $(CPPOBJS) $(CPP) -shared -o $@ $^ $(LIBS) ////////////////////// ...

  2. Linux下的静态库与动态库的生成与调用

    静态库与动态库 静态函数库 这类库的名字一般是libxxx.a,xxx为库的名字.利用静态函数库编译成的文件比较大,因为整个函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的执行 ...

  3. makefile编写---.so动态库的生成和调用

    http://blog.sina.com.cn/s/blog_559f6ffc0100fl3z.html  动静 http://blog.csdn.net/yuyunliuhen/article/de ...

  4. Eclipse下生成.dll动态库及.a静态库使用 for Windows [z]

    以后的主要工作就是做库了,将我们的C或者C++写的接口做成库,给客户端使用,因此有必要知道库的使用和制作方法.主要是在Eclipse下搞了搞,公司用的是Carbide,也差不多.库做好了,用SVN已提 ...

  5. 2017.10.29 C/C++/C#程序如何打成DLL动态库

    C/C++程序如何打成DLL动态库: **1.在VS中新建main.h,添加如下内容:** extern "C" _declspec(dllexport) int onLoad() ...

  6. C/C++/C#程序如何打成DLL动态库

    C/C++程序如何打成DLL动态库:1.在VS中新建main.h,添加如下内容:extern "C" _declspec(dllexport) int onLoad(); 2.新建 ...

  7. Delphi调用C# 编写dll动态库

    Delphi调用C# 编写dll动态库 编写C#dll的方法都一样,首先在vs2005中创建一个“类库”项目WZPayDll, using System.Runtime.InteropServices ...

  8. Delphi - Windows系统下,Delphi调用API函数和7z.dll动态库,自动把文件压缩成.tar.gz格式的文件

    项目背景 应欧美客户需求,需要将文件压缩成.tar.gz格式的文件,并上传给客户端SFTP服务器. 你懂的,7-Zip软件的显著特点是文件越大压缩比越高,在Linux系统上相当于我们Windows系统 ...

  9. .NET 使用 MySql.Data.dll 动态库操作MySql的帮助类--MySqlHelper

    .NET 使用 MySql.Data.dll 动态库操作MySql的帮助类--MySqlHelper 參考演示样例代码,例如以下所看到的: /// <summary> /// MySql ...

随机推荐

  1. window对象;document对象;

    window对象: DOM:文档对象模型 --树模型文档:标签文档,对象:文档中每个元素对象,模型:抽象化的东西 一:window: 属性(值或者子对象):opener:打开当前窗口的源窗口,如果当前 ...

  2. UBUNTU 14.04 安装 OPENCV 2.4.9

    1.  从OpenCV.org 下载源代码 opencv-2.4.9.zip 2. 解压到准备好的目录 unzip opencv-2.4.9.zip 3. 进入源码目录,创建release目录 cd ...

  3. 数据库主键跟外键+修改mysql的密码

    update myspl.user set password=PASSWORD(设置的密码)  where user='root'; 如果修改错误:先执行use mysple;再重复上面的代码. 一. ...

  4. jfinal框架教程-学习笔记(二)

    上一节介绍了jfinal框架的简单搭建,这节通过一个小例子了解jfinal的结构和特点 先上图 1.建数据库(我用的是oracle数据库,其他的相对也差不多) -- Create table crea ...

  5. 分布式集群中,设定时间同步服务器,以及ntpd与ntpdate的区别

    什么时候配置时间同步? 当分布式集群配置好了以后,马上配置的是SSH无密钥配置,然后就是配置时间同步. 时间同步在集群中特别重要. 一:时间同步 1.时间同步 集群中必须有一个统一的时间 如果是内网, ...

  6. Cocos2d-JS cc.DrawNode用法

    app.js var HelloWorldLayer = cc.Layer.extend({ sprite:null, ctor:function () { ///////////////////// ...

  7. RTSP交互命令简介及过程参数描述

    目录 [hide] 1 RTSP消息格式 2 简单的rtsp交互过程 3 rtsp中常用方法 3.1 OPTION 3.2 DESCRIBE 3.3 SETUP 3.4 PLAY 3.5 PAUSE ...

  8. Linux some command(continue...)

    挂载硬盘 sudo mount -t ext4 /dev/sdb1 /media/hadoop 自动挂载相关 sudo blkid sudo fdisk -l vim /etc/fstab cat / ...

  9. LightOj1137 - Expanding Rods(二分+数学)

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1137 题意:有一根绳子的长度为l,在有温度的情况下会变形为一个圆弧,长度为 l1 = ...

  10. 为 UIButton 添加长按事件

    UIButton *aBtn=[UIButtonbuttonWithType:UIButtonTypeCustom]; [aBtn setFrame:CGRectMake(40, 100, 60, 6 ...