VS生成自己的DLL并调用
目录
一、生成dll
新建空项目,然后在属性里更改这两个地方
代码如下:
fun.h
-
//fun.h
-
-
-
//定义导出函数,DLLEXAMPLE_EXPORT_API在函数类型前,若是类,则在class和类名之间
-
-
-
DLLEXAMPLE_EXPORT_API int add(int a, int b);
fun.cpp
-
-
-
DLLEXAMPLE_EXPORT_API int add(int a, int b)
-
{
-
return a b;
-
}
然后选择生成项目,此时会生成一个dll和一个lib,lib说明函数具体位置,dll说明函数具体内容
二、调用dll
新建空白项目,直接使用dll的头文件,并添加一个cpp源文件,直接使用头文件里面的函数即可,因为dll项目里面已经定义了可以在外部项目,通过dll调用函数
main.cpp
-
-
-
-
int main()
-
{
-
std::cout << "输出a b=" << add(9, 6) << std::endl;
-
return 0;
-
}
运行此项目时,必须把dll和lib复制到源码所在的路径下
三、从dll中导出函数的define
可以使用这个更为全面,可以从dll导入导出函数
四、dll解读
- 若有两个具有依赖关系的动态链接库fun1.dll和fun2.dll,fun2.dll依赖fun1.dll
fun1.dll包含函数
-
void fun1()
-
{
-
printf("fun1功能\n");
-
}
-
-
void fun11()
-
{
-
printf("fun11功能\n");
-
}
fun2.dll包含函数
-
void fun2()
-
{
-
fun1();
-
printf("fun2功能\n");
-
}
-
-
void fun22()
-
{
-
fun1();
-
}
若此时在外部调用上述各功能,则需要根据函数所在位置,调用所需的dll,例如若要调用fun2函数,则只用使用fun2.h、fun2.lib、fun2.dll;但是若要使用fun1函数,则仅调用fun2.dll是没用的,fun2.dll里面没有fun1这个函数,此时只能把fun1.h、fun1.lib、fun1.dll都加上才能用fun1函数。
另外一个曲线救国的方法是在fun2.dll定义一个fun22函数,让它执行fun1函数,这时候运行fun22函数就不需要fun1.dll了,它属于fun2.dll独立的函数了。
- dll的名称比较敏感,因为编译的时候就固定死了,不能随便修改,比如Debug模式下,编译生成fun.dll,此时不能修改Debug模式下的动态链接库为fund.dll,这样会导致找不到fun.dll
- lib库的名字不敏感,可以随意修改,调用的时候指明链接的lib即可
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhggehcf
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13