战魂小筑

讨论群:309800774 知乎关注:http://zhihu.com/people/sunicdavy 开源项目:https://github.com/davyxu

   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  257 随笔 :: 0 文章 :: 506 评论 :: 0 Trackbacks

这里使用的是VC2008编译exe,其中要链接VC2005编译的静态库,编译,链接都无问题。运行后出现无法找到Manifest问题。按照传统,查看用户机是否使用FAT32格式分区,勾选解决FAT32选项依然无效。屏蔽新链接库,运行又正常,所以问题出现在静态库本身。但是静态库编译时无法关闭和控制Manifest。

Google之,找到这样一篇文章

http://connect.microsoft.com/VisualStudio/feedback/details/362837/migrating-from-microsoft-vc80-crt-manifest-to-microsoft-vc90-crt-manifest

突然想到,静态库编译器与exe编译器不统一,马上重新使用2008编译静态库,问题解决

 

总结:

VC6时期没有Manifest,那个时候编译出的lib都可以给现在的编译器用,2003也勉强,但是2005还没做完善,2008就是2005的大补丁,所以以后库用2008编译都应该没有问题

posted on 2010-11-22 12:05 战魂小筑 阅读(2444) 评论(7)  编辑 收藏 引用 所属分类: C++/ 编程语言

评论

# re: 使用VC2008链接VC2005静态库出现的运行时Manifest问题 2010-11-22 12:17 Touchsoft
我遇到的问题是:第三方使用vc2005开发的静态库,而我们的项目使用VC2008开发,结果在C++运行时库上不一致,没有第三方库的源码,压根解决不了呀。  回复  更多评论
  

# re: 使用VC2008链接VC2005静态库出现的运行时Manifest问题 2010-11-22 12:19 战魂小筑
@Touchsoft
跟我们情况类似,但我们是有源码的,可以给微软开发团队发一封邮件问下  回复  更多评论
  

# re: 使用VC2008链接VC2005静态库出现的运行时Manifest问题 2010-11-22 15:08 WXX
Manifest引起的hell,不亚于dll的hell,以至于微软官方文档都建议使用静态链接MFC CRT的方式解决,早之前我也热衷动态链接,现在彻底不敢了。  回复  更多评论
  

# re: 使用VC2008链接VC2005静态库出现的运行时Manifest问题 2010-11-22 15:36 战魂小筑
@WXX
这个估计得看项目安全性吧,我们项目避免静态链接CRT就是防止最后一层链接速度过慢,且需要手动忽略太多库
  回复  更多评论
  

# re: 使用VC2008链接VC2005静态库出现的运行时Manifest问题 2010-11-23 13:15
静态库 必须使用同一个编译器,否则后患无穷。  回复  更多评论
  

# re: 使用VC2008链接VC2005静态库出现的运行时Manifest问题 2010-11-24 22:24 Corner Zhang
呵呵!都是有经验的人士发言啊。
战魂小筑 和 坏的发言是很好的,值得注意!
1 一般一个够小的项目,尽可能采用全静态链接 + 源码编译,减少第三方库的使用
2 若项目太大,一定要用动态库的方式,就依“项目避免静态链接CRT就是防止最后一层链接速度过慢,且需要手动忽略太多库”!来做  回复  更多评论
  

# re: 使用VC2008链接VC2005静态库出现的运行时Manifest问题 2010-11-24 23:47 战魂小筑
@Corner Zhang
也不一定哦,动态库我原来就用,内存处理还是太麻烦了,现在很多游戏还是使用静态库链接  回复  更多评论
  


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理