文档章节

c++如何生成动态链接库并显示调用

稀饭桶子
 稀饭桶子
发布于 2013/09/19 19:44
字数 242
阅读 1586
收藏 4

以下代码的测试环境 vc++6.0

步骤    1.创建Dll工程

          2.创建用来调用Dll的测试工程

1.  创建Dll工程

    a.用vc++6.0创建一个dll(Dynamic~Link Library)工程

    b.代码:

    

BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
					 )
{
    return TRUE;
}


extern "C" __declspec(dllexport)  int  add(int x,int y)
{
	return x+y;
}

extern "C" 表示在链接库里面生成原模原样的函数,方便调用
__declspec(dllexport) 表示dll导出的调用约定

编译成功后,Debug目录下会出现一个与工程名.dll


2.创建用来调用Dll的测试工程

    a.创建一个控制台程序

    b.将上面生成的dll拷贝到该工作目录下

    c.代码

#include <iostream>
#include <windows.h>

using namespace std;

typedef int (*ExternAdd)(int ,int);
int main(int argc, char* argv[])
{
	HINSTANCE hi=LoadLibrary("Dll2.dll");
	if(hi==NULL)
	{
		cout<<"不能加载动态链接库"<<endl;
	}
	ExternAdd p=(ExternAdd)GetProcAddress(hi,"add");
	cout<<p(1,2)<<endl;
	FreeLibrary(hi);
	return 0;
}


 

© 著作权归作者所有

共有 人打赏支持
稀饭桶子
粉丝 10
博文 37
码字总数 6033
作品 0
漳州
私信 提问
如何为Android,Mac和Windows平台创建Java JNI动态链接库

Java Native Interface (JNI) 是Java和C/C++之间的桥梁。在一些情况下,为了提高Java程序的性能,扩展Java程序的功能,我们需要使用JNI。比如数据库的调用,当我们下载一个JDBC的jar包之后,...

yushulx
2014/09/17
0
0
C#调用C++动态链接库方法介绍 - 51CTO.COM

当VC等调用C#写的COM时,用regasm /tlb生成TLB文件,也可用tlbexp.exe,在VC等中加载TLB文件,当用C#调用VC等写的COM时,用tlbimp.exe,你可以写一个程序调试一下 下面介绍C#调用C++动态链接库...

薛向阳
2010/06/23
0
0
VS2010 如何release 生成exe

点击生成-->配置管理器-->活动解决方案配置下拉菜单中选择Release。 使用VS2010编译的程序在windows xp中运行时 经常会出现找不到 相关的DLL文件,我们可以使用静态编译的方法把这些运行依赖...

小青_1989
2014/04/08
0
0
[开源世界]从自动导出动态链接库接口看C++的缺点

自动导出动态链接库接口在C++编程中绝对是一件烦人的事情,因为你不得不大量的重复以下几个步骤: 1.加载动态链接库 2.定义导出函数指针定义 3.定义导出函数指针变量 4.从动态链接库中导出函...

梁欢
2013/10/21
0
2
2014百度校园招聘软件研发类笔试(深圳)

时间:2013年9月28日。 地点:深圳 职位:软件研发 问答题:(10*3) 1.动态链接库(DLL)与静态链接库(lib)的优缺点: 静态链接库和动态链接库都是共享代码的方式,如果采用静态链接库,则无...

SibylY
2013/09/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

经典编程书籍大全·我一本都没有看过

经典编程书籍大全 100+ 经典技术书籍,涵盖:计算机系统与网络、系统架构、算法与数据结构、前端开发、后端开发、移动开发、数据库、测试、项目与团队、程序员职业修炼、求职面试 和 编程相关...

netkiller-
12分钟前
0
0
改变自己从学习linux开始

刚刚高中毕业,进如大学的时候,总以为摆脱了束缚可以无拘无束的玩耍了。当时真的就是和众多大学生一起,像撒欢的野马,每天逃课,上网,泡吧,不把学习当一会事,学校里教授讲的各种知识也没...

linuxprobe16
15分钟前
2
0
Apache Zeppelin 中 Spark解释器

概述 Apache Spark是一种快速和通用的集群计算系统。它提供Java,Scala,Python和R中的高级API,以及支持一般执行图的优化引擎。Zeppelin支持Apache Spark,Spark解释器组由5个解释器组成。 ...

hblt-j
16分钟前
0
0
十分钟带你理解Kubernetes核心概念

http://www.dockone.io/article/932

踏破铁鞋无觅处
29分钟前
1
0
浅析微信支付:开通免充值产品功能及如何进行接口升级指引

本文是【浅析微信支付】系列文章的第十五篇,主要讲解如何开通免充值产品功能流程和其中的注意事项,对于接口升级会重要讲解,避免爬坑。 浅析微信支付系列已经更新十五篇了哟~,没有看过的...

YClimb
58分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部