网站建设需要编程吗,专注建设高端网站,听书网页设计教程,易优cms怎么样目录
一#xff0c;生成动态链接库
二#xff0c;使用动态链接库 一#xff0c;生成动态链接库
1.打开VS2019#xff0c;创建新项目#xff0c;选择 动态链接库(DLL) 模板后进行下一步 2.输入项目名称#xff0c;其它默认就行(可自行选择)#xff0c;点击创建 3 工程…目录
一生成动态链接库
二使用动态链接库 一生成动态链接库
1.打开VS2019创建新项目选择 动态链接库(DLL) 模板后进行下一步 2.输入项目名称其它默认就行(可自行选择)点击创建 3 工程界面架构默认显示如下 4.右键工程名点击 添加—新建项选择 C类 并输入类名点击添加在添加类页面直接点击确定即可 5.在新添加 demoDLL.h 头文件中测试如下代码
#pragma once
#include iostream
//__declspec(dllexport)作用告诉编译器和链接器被它修饰的类函数或变量生成DLL后能被外界调用
#define LIBRARY_API __declspec(dllexport)#ifdef __cplusplus
extern C //指示编译器这部分代码按C语言的进行编译而不是C的能够正确实现C代码调用其他C语言代码
{
#endifLIBRARY_API void One();LIBRARY_API int Two(int a, int b);void Three(); //未加 LIBRARY_API调用DLL是否能使用全局函数class LIBRARY_API A {//测试在类名称前加 LIBRARY_API调用DLL是否能使用类内成员public:void Four();static void Five();};class B {//测试在类名称前不加 LIBRARY_API而是在类内个别函数加 LIBRARY_API调用DLL是否能使用类内成员public:LIBRARY_API void Six();static void Seven();};#ifdef __cplusplus
}
#endif // __cplusplus
6.在新添加 demoDLL.cpp 源文件中测试如下代码
#include pch.h
#include demoDLL.hvoid One()
{std::cout DLL_函数接口One() std::endl;
}int Two(int a, int b)
{std::cout DLL_函数接口Two() std::endl;return a b;
}void Three()
{std::cout DLL_函数接口Three() std::endl;
}void A::Four()
{std::cout DLL_A类成员函数接口Four() std::endl;
}void A::Five()
{std::cout DLL_A类成员静态函数接口Five() std::endl;
}void B::Six()
{std::cout DLL_B类成员函数接口Six() std::endl;
}void B::Seven()
{std::cout DLL_B类成员静态函数接口Seven() std::endl;
}7.右击工程名称选择生成然后会在工程目录Debug目录下生成 dll 和 lib 库文件可自行选择Debug模式还是Release模式32位还是64位 二使用动态链接库
1.将生成 CreateDLL.dllCreateDLL.lib 拷贝一份到新建的 DLL/lib 目录下将生成动态库的所有头文件 framework.hpch.hdemoDLL.h 拷贝一份到新建的 DLL/include 目录下 2.新建一个工程名称userDLL来测试该动态链接库在项目属性页窗口进行配置 3.并在链接器的输入下附加依赖项指定加载的动态库对应的lib文件 4.新建cpp文件并编写如下测试代码另外也验证一下 __declspec(dllexport)
#include iostream
using namespace std;
#include demoDLL.hint main()
{One();std::cout Two(21, 25) std::endl;//Three();//编译不通过说明全局函数未加 __declspec(dllexport) 声明不能被外部调用A a;a.Four();A::Five();B b;b.Six();//B::Seven();//编译不通过进一步说明只要未加 __declspec(dllexport) 声明就不能被外部调用return 0;
}
5.但这里运行报了如下错误解决办法是将 CreateDLL.dll 拷贝一份到该工程目录下就行 6.最后运行成功了大功告成