VC中dll与文件包含的实际区别是什么?
1、在file.cpp里自定义一个函数func(),然后在appli.cpp里通过文件包含include".....\file.cpp"来调用函数func();2、构建一...
1、在file.cpp里自定义一个函数func(),然后在appli.cpp里通过文件包含include".....\file.cpp"来调用函数func();
2、构建一个file.dll动态链接库,里面有一个自定义函数func(),然后在appli.cpp里链接到这个dll,调用里面的函数func()。
这两种方法有什么实质上的区别吗?我是说,最后的效果有什么不同(原理当然不同)?比方说,二者编程上的难度,程序运行的速度,等等之类的。 展开
2、构建一个file.dll动态链接库,里面有一个自定义函数func(),然后在appli.cpp里链接到这个dll,调用里面的函数func()。
这两种方法有什么实质上的区别吗?我是说,最后的效果有什么不同(原理当然不同)?比方说,二者编程上的难度,程序运行的速度,等等之类的。 展开
4个回答
展开全部
方法1,通过 include 把函数func()的源程序 包含进主程序,编译成 .exe 程序。
这些在编译过程中完成。所以,运行时只需要 运行.exe 一个程序。
程序安装简单,运行简单,速度快。
方法2,编译成 .dll 和 .exe 两个程序。运行时既需要.exe ,还需要 .dll
程序需要安装。运行 .exe,系统检查 .dll 是否已运行,若没有,就要启动.dll。
所以 运行复杂,速度慢。
编程上,当然方法2 难,复杂。
所以通常只有多程序需要共用的东西才放入.dll,例如 MFC 里的东西,许多视窗可以共用已运行的一个 或若干个 .dll,而 .exe 里不含 这些 共用的东西,使得 .exe 文件较小。
这些在编译过程中完成。所以,运行时只需要 运行.exe 一个程序。
程序安装简单,运行简单,速度快。
方法2,编译成 .dll 和 .exe 两个程序。运行时既需要.exe ,还需要 .dll
程序需要安装。运行 .exe,系统检查 .dll 是否已运行,若没有,就要启动.dll。
所以 运行复杂,速度慢。
编程上,当然方法2 难,复杂。
所以通常只有多程序需要共用的东西才放入.dll,例如 MFC 里的东西,许多视窗可以共用已运行的一个 或若干个 .dll,而 .exe 里不含 这些 共用的东西,使得 .exe 文件较小。
展开全部
我觉得有两点:第一可以很好的保护你的代码安全,因为这样别人看不到你的核心代码。第二可以减小.exe文件的大小,而且是动态的加载,当程序运行到需要此函数时才把.dll加载到内存中去,这样程序运行时就要省很多内存,运行当然会快。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没有区别。
好像全局键盘钩子,必须用dll
好像全局键盘钩子,必须用dll
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
DLL本身就是协同开发的产物
对一个人的开发来说,关系不是太大
但对于一个小组来说,由于执行文件只有一个
大家分工时定义好接口,各自完成自己的DLL
自己完成调试,最后再拼装在一起
此外DLL封装后,可以让其它人的程序也可以方便调用
自己的函数功能,同时也避免了源代码的泄漏
对一个人的开发来说,关系不是太大
但对于一个小组来说,由于执行文件只有一个
大家分工时定义好接口,各自完成自己的DLL
自己完成调试,最后再拼装在一起
此外DLL封装后,可以让其它人的程序也可以方便调用
自己的函数功能,同时也避免了源代码的泄漏
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询