Windows下用Codeblocks建立一个最简单的DLL动态链接库
转自:http://blog.csdn.net/wangwei_cq/article/details/8187576
来源:http://hi.baidu.com/hellosim/item/9ae4317168f4a74bee1e53cb
建立一个最简单的只有一个get_id() 函数的DLL库
一、创建C语言动态链接库
1.新建一个动态库的工程
File - New - Project - DLL - Go
新建的工程原来的main.cpp和main.h删除,新建两个文件simple.h, simple.c添加进工程
注意默认是cpp文件,我们做C库,要用C文件
simple.h
#ifndef SIMPLE_H_INCLUDED
#define SIMPLE_H_INCLUDED
#ifdef BUILD_DLL
#define DLL_EXPORT __declspec(dllexport)
#else
#define DLL_EXPORT __declspec(dllimport)
#endif
int DLL_EXPORT get_id(void);
int DLL_EXPORT add(int,int);
#endif // SIMPLE_H_INCLUDED
simple.c
#include "simple.h"
int DLL_EXPORT get_id(void)
{
return 10;
}
int DLL_EXPORT add(int x,int y)
{
return x+y;
}
然后编译,成功后在bin\Debug目录下生成3个文件:libsimple.dll.a, simple.dll,libsimple.dll.def
二、动态链接库调用
1、隐式调用
1)建立一个test的工程File - New - Project - Console application - Go - 选择 c删除main.h,把库的test.h复制到工程中,现在就有main.c 和test.h
main.c
#include <stdio.h>
#include "simple.h"
int main()
{
printf("id = %d\n", get_id() );
printf("id = %d\n", add(1,2) );
system("pause");
return 0;
}
simple.h跟上面一样
2)把dll库添加到工程中
将刚刚生成的两个文件libsimple.a, libsimple.dll复制到test工程的bin\Debug目录下
Project - Build options - 左上角默认是Debug,不选这个,选上面那个test - Linker settings - Add 选择 bin\Debug\libsimple.dll.a - 确定,编译成功即可。
2、显示调用
1)建立一个test1的工程File - New - Project - Console application - Go - 选择 编辑main.h,
main.c
#include <stdio.h>
#include <windows.h>
typedef int(*lpGet_id)(void); //定义函数类型
typedef int(*lpAdd)(int,int); //定义函数类型
HINSTANCE hDll; //DLL句柄
lpGet_id get_id;
lpAdd add;
int main()
{
hDll = LoadLibrary("simple.dll"); //加载 dll
get_id = (lpGet_id)GetProcAddress(hDll, "get_id");//通过指针获取函数方法
add = (lpAdd)GetProcAddress(hDll, "add");//通过指针获取函数方法
printf("id = %d\n", get_id() );//调用函数
printf("id = %d\n", add(1,2) );//调用函数
FreeLibrary(hDll);//释放Dll句柄
system("pause");
return 0;
}
simple.h跟上面一样
2)把dll库添加到工程中
将刚刚生成的两个文件libsimple.dll复制到test工程的bin\Debug目录下
编译成功即可。
Windows下用Codeblocks建立一个最简单的DLL动态链接库的更多相关文章
- windows下利用iis建立网站网站并实现局域共享
博客园 首页 新随笔 联系 管理 订阅 随笔- 54 文章- 9 评论- 0 Windows下利用IIS建立网站并实现局域网共享 https://blog.csdn.net/qq_4148541 ...
- windows azure中国 里面建立一个虚拟机,与虚拟机建立通信 里面部署IIS,外网访问
在windows azure中国 里面建立一个虚拟机,里面部署IIS,外网不能访问么? 外网访问的地址是给的那个DNS地址 ,比如我的是 DNS 名称 urbanairserver.cloudapp. ...
- Windows下使用Xshell建立反向隧道
反向隧道是一个进行内网穿透的简单而有用的方法.在Linux下通过OpenSSH和AutoSSH可以很容易地建立稳定的反向隧道.但是在Windows下,还能看到有人特意装个Cygwin来运行这些工具…… ...
- Windows 下对目录建立软链接
在Linux下,可以很方便的通过ln命令创建对文件和对文件夹的软链接.在Windows下,通过快捷方式,可以创建到文件和文件夹的链接,但是这软链接不是一个层面的上东西.软链接是底层文件系统层面的,而快 ...
- Windows下chm转换为html的超简单方法
摘要:通过调用Windows命令,将chm 文件转换为html 文件 概述:很多程序员朋友都会遇到这样的问题,看一个离线版的帮助文档(chm文件),总会产生一个索引文件(该文件的chw文件), 而且有 ...
- windows下docker与.net core 的简单示例
一 windows 下安装docker 二 .net core 项目 新建一个空的ASP.NET Core Web 应用程序 在该项目的目录下执行dotnet publish,可以看到在bin\Deb ...
- Windows下node-gyp查找VS安装路径简单解析
node-gyp的作用我已经不想赘述了,这里给一个我之前文章的链接:cnblogs看这里,知乎看这里.本文主要从源码入手,介绍node-gyp查找VisualStudio的过程 为了方便我们研究nod ...
- qt在windows下的udp通信(最简单)
qt编程:windows下的udp通信 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: 主机:win7 开发环境:qt 功能: 用udp进行收发 ...
- windows 下 使用codeblocks 实现C语言对python的扩展
本人比较懒就粘一下别人的配置方案了 从这开始到代码 摘自http://blog.csdn.net/yueguanghaidao/article/details/11538433 一直对Python扩展 ...
随机推荐
- web项目 验证码 *** 最爱那水货
1. jsp代码 : <Script> function changeImg(){ document.getElementById("certImg").src =&q ...
- 为什么正常安装并成功运行了Genymotion虚拟但是运行的时候启动的却是自带的模拟器?
最近因为这个问题困惑了好久,最终找到了解决思路: 点击genymotion——setting——ADB——Use sustom Android tools,找到电脑中SDK文件位置就可了! 希望自己坚 ...
- 更新整理本人所有博文中提供的代码与工具(C++,2013.10)
为了更方便地管理博文中涉及的各种代码与工具资源,现在把这些资源迁移到 Google Code 中,有兴趣者可前往下载. C++ 1.<通用高性能 Windows Socket 组件 HP-Soc ...
- windows根据端口号找进程
d:\>netstat -ano | findstr "7777" TCP 127.0.0.1:7776 127.0.0.1:7777 ESTABLISHED 11764 T ...
- 一款经典的jQuery kxbdMarquee 无缝滚动插件
<marquee> 曾是 IE 下独有的一个走马灯效果的标签,其他浏览器并不兼容,于是出现了使用 JavaScript 来模拟该效果的插件. 版本: jQuery v1.3.2+ 在线实例 ...
- Koala – 开源的前端预处理器语言图形编译工具
koala 是一个前端预处理器语言图形编译工具,支持 Less.Sass.Compass.CoffeeScript,帮助 Web 开发者更高效地使用它们进行开发.跨平台运行,完美兼容 Windows. ...
- JavaScript学习笔记-表达式和语句
表达式和语句 eval( ) 只有一个参数 参数非字符串时,直接返回这个参数: 参数为字符串时,它把字符串当成JavaScript代码进行编译,编译失败则抛出语法错误,编译成功则执行代码,并返回最后一 ...
- eclipse 常用设置,常用快捷键修改
eclipse 常用设置,常用快捷键,myeclipse和eclipse类似' 首先打开eclipse的首选项-->搜索 keys' 常用的一些快捷键: Ctrl+1 快速修复(最经典的快捷键, ...
- SP2013 SP1(kb28805502)补丁安装测试初体验
安装完SP1(kb28805502)第一印象是整体页面加载浏览速度非常快了,在笔记本建立的虚拟机能达到肉眼感觉不到卡顿真的是非常快了. 1.新添加了页面个性化设置功能菜单 3.默认访问网站的页面显示, ...
- listview复用机制研究
Listview在第一次的时候会先把屏幕上绘制的item都new出来,为了讲解方便我把new出来的item都用红色背景,复用的则用绿色背景. 可以看到这个list种有三种item.在第一次展示的时候, ...