static library 与shared dll 有什么区别?

BlackRain007 2005-09-13 10:34:48
VC做工程的时候,project->setting里选used in a shared dll 和used in a static library有什么区别,我听说用static library生成的程序到没有安装vc的电脑上也可运行,可是我编的一个程序(用static library)如果在没有安装VC的电脑上运用就会报错说"没有找到MSVCRTD.dll",怎么回事?
...全文
888 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
BlackRain007 2005-09-15
  • 打赏
  • 举报
回复
没人回答啊
贵子潘 2005-09-14
  • 打赏
  • 举报
回复
used in a static library:
比如你用到这个库里的函数,这些函数代码(二进制代码)都拷贝到你的代码程序里来了,所以运行时可以直接找到这些函数,所以可以在没有这些库的机器上运行
used in a shared dll:
当你用到这些库里的函数时,这些函数代码并没有被拷贝到你的程序中来,而是把这些函数是属于哪个库及它们在库中的地址等信息记录下来。。。所以当你的程序运行时,当用到这些函数时,会根据已记录下的信息把函数所属的库加载进地址空间来,再找到要运行的函数地址,这样才可以运行。。。
所以运行你的程序的机器必须要有这些函数所属的库

大概这样理解可以了吧,呵呵
BlackRain007 2005-09-14
  • 打赏
  • 举报
回复
谢谢上面3个大虾的解释,我基本搞清楚了。
可是我的程序选的static library,为什么程序到没有安装vc的电脑上运行就会报错说"没有找到MSVCRTD.dll",怎么回事?
编译realease的时候有一个警告:

msvcrt.lib(cinitexe.obj) : warning LNK4098: defaultlib "msvcrtd.lib" conflicts with use of other libs; use /NODEFAULTLIB:library

不知道和这个"没有找到MSVCRTD.dll"的错误有没有关系?
BlackRain007 2005-09-14
  • 打赏
  • 举报
回复
顶一下
fanqing 2005-09-14
  • 打赏
  • 举报
回复
静态会将库直接加入你的代码,动态则在需要时加入,不需要时卸载.
i_noname 2005-09-13
  • 打赏
  • 举报
回复
used in a static library:
使用lib文件。lib是已经编译好的二进制文件,可以与你的工程静态链接起来成为一个exe。

used in a shared dll:
使用dll文件,函数实现隐藏在DLL文件内部,你的工程编译成exe文件后,运行时才调用dll
i_noname 2005-09-13
  • 打赏
  • 举报
回复
used in a static library:
使用lib文件。lib是已经编译好的二进制文件,可以与你的工程静态链接起来成为一个exe。

used in a shared dll:
使用dll文件,函数实现隐藏在DLL文件内部,你的工程编译成exe文件后,运行时才调用dll
BlackRain007 2005-09-13
  • 打赏
  • 举报
回复
另外谁能详细说说used in a shared dll 和used in a static library有什么区别,我对这个了解的一知半解。
BlackRain007 2005-09-13
  • 打赏
  • 举报
回复
是的我是用的static library方式,编译成release版本,刚刚才又试的。不过我用static library和
shared dll出来的可执行文件的大小一样。另外还有一个警告,不知道和这个问题有没有关系.
msvcrt.lib(cinitexe.obj) : warning LNK4098: defaultlib "msvcrtd.lib" conflicts with use of other libs; use /NODEFAULTLIB:library
windcsn 2005-09-13
  • 打赏
  • 举报
回复
你确信是使用static library方式编译的吗?还有你编译为release版本了吗?

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧