邢台建网站找谁广安做网站
news/
2025/10/5 21:44:19/
文章来源:
邢台建网站找谁,广安做网站,网站后台怎么上传文件,wordpress添加浮动小人需求#xff1a; 创建A项目#xff0c;有函数和类#xff0c;将A项目生成DLL动态链接库 创建B项目#xff0c;使用A项目生成的dll和lib相关文件
正常项目开发.h用于函数声明#xff0c;.cpp用于函数实现#xff0c;但是项目开发往往不喜欢将.cpp函数实现的代码发给别人 创建A项目有函数和类将A项目生成DLL动态链接库 创建B项目使用A项目生成的dll和lib相关文件
正常项目开发.h用于函数声明.cpp用于函数实现但是项目开发往往不喜欢将.cpp函数实现的代码发给别人就可以生成.dll和.lib让用户进行使用从而屏蔽掉了相关函数的实现.cpp文件
一、创建——生成DLL新项目 模板选用C空项目 随便起个名称这里项目名称为test_dll
SDK选用Release x64 创建头文件 这里是test_dll.h
#pragma once#ifndef TEST_DLL
#define TEST_DLL//宏定义导出
#ifdef TEST_DLL__
#define TEST_DLL __declspec(dllexport) // 导出
#else
#define TEST_DLL __declspec(dllimport) // 导入
#endif// 导出函数
TEST_DLL int add(int a, int b);
TEST_DLL int sub(int a, int b);
TEST_DLL int mul(int a, int b);// 导出类
class TEST_DLL Animal
{
public:void run();void call();
};// 以C语言方式导出函数
extern C
{TEST_DLL int Cadd(int a, int b);TEST_DLL int Csub(int a, int b);TEST_DLL int Cmul(int a, int b);
}#endif // !TEST_DLL创建对应的.cpp文件 这里是test_dll.cpp用于对test_dll.h头文件中声明的函数进行实现
#include test_dll.h
#include iostreamint ADD(int a,int b)
{int c a b;return c;
}int SUB(int a, int b)
{if (a b)return a - b;else return b - a;
}void Animal::RUN()
{std::cout Animal is run!!! std::endl;
}void Animal::CALL()
{std::cout Animal is call!!! std::endl;
}int Cmax(int a, int b)
{if (a b) return a;else return b;
}int Csub(int a, int b)
{if (a b)return a - b;else return b - a;
}int Cmul(int a,int b)
{return a * b;
}二、配置——生成DLL项目
右击 项目属性 配置类型选择动态库(.dll)SDK我选择的是Release x64 将来导入DLL的时候也是Release x64下才可以导入 右击 解决方案 生成解决方案 快捷键Ctrl Shift B 在项目的x64/Release下有2个文件就是需要的文件一个是test_dll.dll另一个是test_dll.lib 还需的第三个文件是编写的test_dll.h
小结 需要用到三个文件 1项目下的x64/Release下的test_dll.dll 2项目下的x64/Release下的test_dll.lib 3项目下的test_dll.h
就此DLL已经生成接下来开始使用上述的三个文件
三、创建——使用DLL项目
新建一个项目 同样选择C 空项目 我这里项目名称为use_dll 切换SDK为Release x64下
四、配置——使用DLL项目
在下面下创建两个文件夹include和lib include下存放.h文件 lib下存放.dll和.lib文件 当前项目下再次添加.dll文件
右击 项目 选择属性 VC目录下 包含目录选到include文件夹 库目录选到lib文件夹 链接器下 附加依赖项添加生成的.lib文件名称
五、测试使用DLL
创建一个demo.cpp来导入dll进行测试 这里创建了一个demo.cpp
#include test_dll.h
#include iostreamint main(int argc, char* argv[])
{std::cout ADD(5, 22) std::endl;std::cout SUB(22, 10) std::endl;std::cout Cmax(99, 20) std::endl;std::cout Cmul(10,5) std::endl;Animal animal;animal.RUN();animal.CALL();return 0;
}参考博文 VS2019-C创建和调用DLL动态链接库傻瓜式教程
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/928768.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!