C++中dll文件的生成和调用 |
您所在的位置:网站首页 › dll文件放在哪个文件 › C++中dll文件的生成和调用 |
一、将 .cpp 文件编译成 .dll 文件
方法一:使用 __declspec(dllexport) 创建 dll 文件 1、创建文件夹 CreatDll 2、为该项目添加头文件 CreatDll.h CreatDll.h 中代码如下: #pragma once #ifdef CREATDLL_EXPORTS #define CREATDLL_API __declspec(dllexport) #else #define CREATDLL_API __declspec(dllexport) #endif // CREATDLL_EXPORTS extern "C" CREATDLL_API int TheAdd(int a, int b); /* 也可以直接写成如下的形式: extern "C" __declspec(dllexport) int TheAdd(int a, int b); #define CREATDLL_API __declspec(dllexport) 的作用是将 __declspec(dllexport) 用标识符 CREATDLL_API 来进行表示 */3、为该项目添加源文件 CreatDll.cpp CreatDll.cpp 代码如下: #include #include "CreatDll.h" int TheAdd(int a, int b){ return a + b; }4、将该文件编译成 .dll 文件 编译成功之后结果如下:会产生 所需要的 .dll 文件和 .lib 文件 ********************************************************************************************************************* 方法二:使用模块(.def)的方式来进行生成 .dll 文件 1、创建新的项目:CreateDll02 2、打开 CreateDll02.cpp 源文件,输入代码 3、给该工程添加一个后缀名为 .def 文件,并在该文件中插入以下代码 【注意】: 其中LIBRARY语句用于指定动态链接库的名称,该名称与生成的 dll 文件名称一定要匹配。EXPORTS语句用于表明dll将要导出的函数,以及为这些导出函数指定的符号名。 可以在.def文件中的导出函数名后加 @n,如TheAdd @1,TheSub @2,表示要导出的函数顺序号。然后在C#中调用这些dll文件中的函数时,可以让 EntryPoint 属性值用该序号来代替相应的函数名。如:[DllImport("CreateDll01.dll" , EntryPoint ="#2" , CallingConvention = CallingConvention.Cdecl)] 中用序号 #2 来代替 TheSub 函数名,其原来的属性值应为:EntryPoint ="TheSub"该DLL编译成功后,打开工程中的Debug目录,同样也会看到 CreateDLL02.dll 文件。 二、C++程序调用 .dll 文件1、新建控制台应用程序的项目,来调用以上所生成的 .dll 文件 2、将已经生成的 .dll 文件和 .lib 文件复制到控制台应用程序的项目文件夹中。 3、再将 CreatDll.h 文件也复制到控制台应用程序的项目文件夹中。 4、将复制过来的 .lib 文件添加到资源文件中 5、为控制台应用程序添加源文件 CallDll.cpp ,代码如下 #include #include "CreatDll.h" using namespace std; int main() { int x, y; cout > x; cout > y; return TheAdd(x, y); }6、运行结果如下:
参考资料: [1] VS2017动态链接库(.dll)的生成与使用 [2] C++编程笔记:dll的生成与使用 [3] 演练:创建和使用自己的动态链接库 (C++)
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |