C++(VS2012)DLL动态库的生成和调用
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动态库的生成和调用的更多相关文章
- 嵌入式开发之makefile---交叉编译静态库和动态库的生成和调用
c和cpp 混合的动态库生成: $(LIBSO): $(COBJS) $(CPPOBJS) $(CPP) -shared -o $@ $^ $(LIBS) ////////////////////// ...
- Linux下的静态库与动态库的生成与调用
静态库与动态库 静态函数库 这类库的名字一般是libxxx.a,xxx为库的名字.利用静态函数库编译成的文件比较大,因为整个函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的执行 ...
- makefile编写---.so动态库的生成和调用
http://blog.sina.com.cn/s/blog_559f6ffc0100fl3z.html 动静 http://blog.csdn.net/yuyunliuhen/article/de ...
- Eclipse下生成.dll动态库及.a静态库使用 for Windows [z]
以后的主要工作就是做库了,将我们的C或者C++写的接口做成库,给客户端使用,因此有必要知道库的使用和制作方法.主要是在Eclipse下搞了搞,公司用的是Carbide,也差不多.库做好了,用SVN已提 ...
- 2017.10.29 C/C++/C#程序如何打成DLL动态库
C/C++程序如何打成DLL动态库: **1.在VS中新建main.h,添加如下内容:** extern "C" _declspec(dllexport) int onLoad() ...
- C/C++/C#程序如何打成DLL动态库
C/C++程序如何打成DLL动态库:1.在VS中新建main.h,添加如下内容:extern "C" _declspec(dllexport) int onLoad(); 2.新建 ...
- Delphi调用C# 编写dll动态库
Delphi调用C# 编写dll动态库 编写C#dll的方法都一样,首先在vs2005中创建一个“类库”项目WZPayDll, using System.Runtime.InteropServices ...
- Delphi - Windows系统下,Delphi调用API函数和7z.dll动态库,自动把文件压缩成.tar.gz格式的文件
项目背景 应欧美客户需求,需要将文件压缩成.tar.gz格式的文件,并上传给客户端SFTP服务器. 你懂的,7-Zip软件的显著特点是文件越大压缩比越高,在Linux系统上相当于我们Windows系统 ...
- .NET 使用 MySql.Data.dll 动态库操作MySql的帮助类--MySqlHelper
.NET 使用 MySql.Data.dll 动态库操作MySql的帮助类--MySqlHelper 參考演示样例代码,例如以下所看到的: /// <summary> /// MySql ...
随机推荐
- Raft
http://thesecretlivesofdata.com/raft/ https://github.com/coreos/etcd 1 Introduction Consensus algo ...
- java 客户端获取真实ip地址
在开发工作中,我们常常需要获取客户端的IP.一般获取客户端的IP地址的方法是:request.getRemoteAddr();但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实 ...
- 【php学习】字符串操作
关于字符串的处理,基本上就是那几种操作:字符串长度.查找子字符串的位置.替换字符串.截取字符串.拆分合并字符串 ... 字符串的定义:直接 $str = "abcd"; 或者 $s ...
- unity3d中控制物体移动方法有那些及区别
1. 利用GameObject的Translate,直接改变它的Transform,前提是需要你实现准备变换矩阵.2. 用MoveTo方法,你只要知道你的目标位置即可.3. 用Math的Lerp方法计 ...
- hbase基本命令
基本命令 建表scores 具有两个列族grad 和courese create 'scores','grade', 'course' 查看当前HBase中具有哪些表 list 查看表结构 des ...
- hadoop编程模型
1. 拷贝数据 将一个超大的数据文件拷贝到hadoop集群中,hdfs将其分割成多个数据块,然后再把每一个数据块放到不同的节点里面. 2. map函数 提交一个map函数,此map函数可以被jobch ...
- phpexcel 读取数据
最近公司做一个客户导入会员的功能,以前导入都是使用csv格式导入的,但是客户反应问题挺多的,普遍是乱码(由于各种系统各种环境可能引起编码问题).最近想着就把这个导入完全改成excel导入,就研究了下p ...
- bug
expected identifier,string or number //这种问题一般是json数据中最后一个逗号没去掉.
- php判断爬虫
function checkrobot($useragent = ''){ static $kw_spiders = 'Bot|Crawl|Spider|slurp|sohu-search|lycos ...
- Socket通信原理探讨(C++为例) good
http://www.cnblogs.com/xufeiyang/articles/4878096.html http://www.cnblogs.com/xufeiyang/articles/453 ...