Windows操作系统中,库分为动态链接库(dll)和静态链接库(lib)
动态链接库(DLL Dynamic Linkable Library)
DLL是Windows中实现代码共享的一种方式。它是一个二进制式文件,不可单独运行,需要调用方调用才能运行。在Windows中,DLL可以被多种编程语言所支持。
1、通过关键字_declspec(dllexport导出)
新建一个C++ dll工程 DllExportTest
新建一个DllExportTest..h文件
输入
1 #pragma once 2 3 __declspec(dllexport) void PrintHelloWorld();
在DllExportTest.cpp中输入
1 #include "stdafx.h" 2 #include"DllExportTest..h" 3 #include<iostream> 4 5 using namespace std; 6 7 void PrintHelloWorld() 8 { 9 cout << "HelloWorld" << endl; 10 }
2、通过模块定义文件导出
新建一个C++ dll工程 DllExportWithDEFTest
新建一个DllExportWithDEFTest.h,输入
1 #pragma once 2 3 void PrintHelloWorld();
在DllExportWithDEFTest.cpp中输入
1 #include "stdafx.h" 2 #include"DllExportWithDEFTest.h" 3 #include<iostream> 4 5 using namespace std; 6 7 void PrintHelloWorld() 8 { 9 cout << "HelloWorld" << endl; 10 }
然后在“源文件”上右键选择“添加新项”,选择“代码”->”模块定义文件(.def)“
.def常用格式如下
LIBRARY DllName //dll名字, DllName可以为空 DESCRIPTION DllDescription //dll 描述 这一行可以省略 EXPORTS FuncOrVariables //要导出的函数名或变量的名字
我在前面的代码中定义了PrintHelloWorld函数,要将它导出,可以这样定义.def文件
LIBRARY
EXPORTS
PrintHelloWorld
如果要将PrintHelloWorld函数导出为其它的名字,如MyFuncName,可以这样定义.def文件
LIBRARY
EXPORTS
MyFuncName = PrintHelloWorld
如何使用导出的函数
C#调用可以参考以下链接
https://www.cnblogs.com/zhaotianff/p/8991847.html
C++调用
隐式链接
原文:https://www.cnblogs.com/zhaotianff/p/10797057.html