如何消除VC编译的程序对VC运行库的依赖?

jedi00 2011-02-23 09:12:05
VS2005,要将项目编译成一个dll,编译完后用depends查看发现依赖于VS2005的运行库MSVCR80.DLL。试了网上介绍的很多方法,编译完后仍对MSVCR80.DLL有依赖。想问一下有没有办法消除这个运行库依赖呢?

编译选项:
Use Standard Windows Libraries
Multi-threaded
...全文
582 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
jedi00 2011-02-24
  • 打赏
  • 举报
回复
逐项排除后发现是因为使用了CLAPACK算法库的原因,当初在编译CLAPACK库的时候貌似没有选MT?

MSDN社区的解释是如果使用了没有按MT编译的.lib,那你的项目编译出来不管怎样都会依赖于那个.lib文件依赖的运行库。
jedi00 2011-02-24
  • 打赏
  • 举报
回复
是Win32 DLL,没用到MFC。源文件为C语言。
用到了CLAPACK算法库(.lib),然后linker->input里排除了LIBCMT.lib(因为重定义错误)
真是见鬼了...


[Quote=引用 8 楼 aaadddzxc 的回复:]

你的是WIN32 DLL?
不是MFC把?

release 后 在 运行库选择 MT的运行库是不会带这个的。VS2008下 我不知道用多少次了!
[/Quote]
xengine-qyt 2011-02-24
  • 打赏
  • 举报
回复
你的是WIN32 DLL?
不是MFC把?

release 后 在 运行库选择 MT的运行库是不会带这个的。VS2008下 我不知道用多少次了!
jedi00 2011-02-23
  • 打赏
  • 举报
回复
没有用到MFC,这个选项选的是Use Standard Windows Libraries

BTW:也试过选择成Use MFC in a static Libraries,编译出来的结果还是有依赖。

[Quote=引用 5 楼 borland109 的回复:]

就是编译的时候静态链接,把这个库文件集成到你的dll文件中,试试。

VS2008中,configuration Propertiy----general---Use of MFC ----Use MFC in a static Libraries
[/Quote]
jedi00 2011-02-23
  • 打赏
  • 举报
回复
补充一点:
源文件是C不是C++。使用到的MSVCR80.DLL中的函数包括:

__CppXcptFilter
__clean_type_info_names_internal
__dllonexit
_adjust_fdiv
_amsg_exit
_crt_debugger_hook
_decode_pointer
_encode_pointer
_encoded_null
_except_handler4_common
_initterm
_initterm_e
_lock
_malloc_crt
_onexit
_unlock
free


borland109 2011-02-23
  • 打赏
  • 举报
回复
就是编译的时候静态链接,把这个库文件集成到你的dll文件中,试试。

VS2008中,configuration Propertiy----general---Use of MFC ----Use MFC in a static Libraries
jedi00 2011-02-23
  • 打赏
  • 举报
回复
“静态链接”指的是?
另回复aaadddzxc和VisualEleven:已经使用了MT和Release编译,depends显示的结果还是要依赖于MSVCR80.DLL


[Quote=引用 1 楼 lslsyqyq 的回复:]

静态链接就不依赖了 就是文件大
[/Quote]
Eleven 2011-02-23
  • 打赏
  • 举报
回复
Release编译一下
xengine-qyt 2011-02-23
  • 打赏
  • 举报
回复
项目属性 C/C++ 运行库 选择 MT。。。其他的运行库都会带上CRT
lslsyqyq 2011-02-23
  • 打赏
  • 举报
回复
静态链接就不依赖了 就是文件大

16,473

社区成员

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

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

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