sub.c

#include<windows.h>
#include"sub.h"
int WINAPI DllMain(_In_ HANDLE _HDllHandle, _In_ DWORD _Reason, _In_opt_ LPVOID _Reserved)
{
return TRUE;
} EXPORT int sub(int a,int b)
{
return a-b; } EXPORT int add(int a,int b)
{
return a+b;
}

sub.h

#ifdef __cplusplus
#define EXPORT extern "C" __declspec (dllexport)
#else
#define EXPORT __declspec (dllexport)
#endif EXPORT int sub(int a,int b);
EXPORT int add(int a,int b);

然后生成解决方案:

即可在Debug/Release目录中看到一个 sub.lib,sub.dll

然后我们把

sub.lib,sub.dll,sub.h这3个文件打包  就可以给用户使用了。

如何使用?

方法一:可以把这3个文件拷贝到当前目录下使用显示的链接:

#include<windows.h>

#include<stdio.h>
#include"sub.h" #pragma comment(lib,"subDll.lib") int main()
{
int a=,b=;
int c;
// printf("%d+%d=%d\n",a,b,add(a,b));
c=sub(a,b);
printf("%d-%d=%d\n",a,b,c);
return ;
}

方法二:

第一步:

第二步:

#include<windows.h>

#include<stdio.h>
#include"sub.h" //#pragma comment(lib,"subDll.lib") int main()
{
int a=,b=;
int c;
// printf("%d+%d=%d\n",a,b,add(a,b));
c=sub(a,b);
printf("%d-%d=%d\n",a,b,c);
return ;
}

编译运行成功!

自己编写DLL并导出函数的更多相关文章

  1. DLL的导出函数重定向机制

    曾经,调试时跟进HeapAlloc,结果发现直接进入到ntdll的RtlAllocateHeap中,感到很有趣,就使用Dependency Walker查看kernel32.dll的导出函数,结果发现 ...

  2. DLL中导出函数的两种方式(dllexport与.def文件)

    DLL中导出函数的声明有两种方式: 一种方式是:在函数声明中加上__declspec(dllexport): 另外一种方式是:采用模块定义(.def)文件声明,(.def)文件为链接器提供了有关被链接 ...

  3. DLL声明导出函数的两种方式

    DLL中导出函数的声明有两种方式:一种为在函数声明中加上__declspec(dllexport):另外一种方式是采用模块定义(.def) 文件声明,.def文件为链接器提供了有关被链接程序的导出.属 ...

  4. (转)DLL中导出函数的两种方式(dllexport与.def文件)

    DLL中导出函数的两种方式(dllexport与.def文件)http://www.cnblogs.com/enterBeijingThreetimes/archive/2010/08/04/1792 ...

  5. 【转】DLL中导出函数的两种方式(dllexport与.def文件)

    DLL中导出函数的两种方式(dllexport与.def文件) DLL中导出函数的声明有两种方式: 一种方式是:在函数声明中加上__declspec(dllexport):另外一种方式是:采用模块定义 ...

  6. DLL动态链接库导出函数方法 -- 动态导出(.def文件导出)

    简介 动态链接库最大的优势在于可以提供给其他应用程序共享的资源,最小化应用程序代码的复杂度,其中一个十分重要的功能就是dll可以导出封装函数的功能.导出函数有两种主要方式,分别是静态导入和动态导入,本 ...

  7. MinGW g++.exe 编译 DLL 时,导出函数名带@的问题

    今天尝试用CodeBlocks写了一个简单的Dll,发现生成的 dll 文件导出的函数名后面都有一个 @xxx 从生成的 libDll2.def 中看到: EXPORTS DllMain@ @ Max ...

  8. dll动态链接库导出函数方法 -- 静态导出(__declspec前缀导出)

    简介 在之前已经笔者已经写过利用.def文件进行dll函数动态导出的文章,那么今天就给大家介绍一下,如何利用**__declspec**函数前缀进行简单的静态函数导出. 要点 大家阅读过动态导出的文章 ...

  9. 查看静态库(.lib)和动态库(.dll)的导出函数的信息 error LNK2001: 无法解析的外部符号 _Delete

    转自VC错误:http://www.vcerror.com/?p=1381 在window下查看动态库的导出函数可以用vs自带的Dependenc工具: 查看静态库的信息要用命令行来实现: 首先运行V ...

随机推荐

  1. IO、阻塞和非阻塞、目录

    系统函数.系统调用 系统函数 open/close函数 函数原型 man 2 open // open, creat - open and possibly create a file or devi ...

  2. C++代做,C++编程代做,C++程序代做,留学生C++ Lab代写

    C++代做,C++编程代做,C++程序代做 我们主要面向留学生,广泛接美加澳国内港台等地编程作业代写,中英文均可. C语言代写 C++代写 Python代写 Golang代写 Java代写 一年半的时 ...

  3. WMware workstation 镜像文件

    https://mirrors.aliyun.com/centos/7.4.1708/isos/x86_64/

  4. 锤子科技向OpenBSD基金会捐款195 万

    导读 专注于提供 OpenBSD 资讯的网站 OpenBSD Journal 昨日报道了锤子科技成为 OpenBSD 基金会 2019 年首位铱金捐赠者的消息. 根据 OpenBSD Journal ...

  5. 一些linux基础命令

    linux基本命令: mkdir -p a/b/c (-p 递归创建目录) tree a (a是文件名) :可以查看某个文件的文件结构(ps:a)创建一个.txt文件 touch 文件名.txt 批量 ...

  6. gerrit 版本下载

    链接:https://gerrit-releases.storage.googleapis.com 如下载gerrit-2.12.2.war https://gerrit-releases.stora ...

  7. 逆战:微信小程序

                                                            微信小程序的生命周期 onLaunch: function(options) { // ...

  8. Flutter Windows下AndroidStudio环境搭建

    目前同类产品比较知名的有ReactNative,Flutter还有国内那家了uniapp了,流畅度理论上Flutter最快 官网:https://flutter.dev/docs/get-starte ...

  9. Linux 下 zip 文件解压乱码如何解决

    作者:Latm Ake链接:https://www.zhihu.com/question/20523036/answer/35225920来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业 ...

  10. 细说 OLAP 与 OLTP

    OLAP (Online analytical processing)[联机分析处理] 起源 数据库概念最初源于1962年Kenneth Iverson发表的名为"A Programming ...