Link error 1112

首先说ARM4 ARM4T 和 ARM4I
ARM4是纯32位的ARM,ARM4T是纯16位THUMB,ARM4还有一个分支ARM4I,是16位和32位混合的
ARM5则是向下兼容的,运行ARM4的程序没问题

在开发和编译Windows Mobile 5.0(ARM4I)的程序时,你也许碰到过如下的错误(PocketPC2003你不会碰到这个问题):

coredll.lib(COREDLL.dll) : fatal error LNK1112: module machine type ‘THUMB’ conflicts with target machine type ‘ARM’

说lib文件的THUMB模式与ARM模式不兼容

编译器的选项:
Project | Properties | Configuration | C++ | Advanced | Compile for Architecture
有选项ARM4 和 ARM4T
Project | Properties | Configuration | C++ | Advanced | Interwork ARM and ARM Thumb Calls
有选项是否允许混合ARM和THUMB调用(即ARM4I)

编译器的选项
Project | Properties | Configuration | Linker | Advanced | Target Machine
有选项MachineARM 和 MachineTHUMB

根据参考网页:
http://forums.microsoft.com/msdn/showpost.aspx?postid=122058
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=195585&SiteID=1
的说法,似乎编译WM5的程序时,必须选择的搭配是ARM4T+MachineTHUMB

但是实际使用 发现 如果开启允许混合调用的选项,ARM4或者ARM4T的选项无所谓,但是MachineType仍然必须是MachineTHUMB

而参考VS2005自己生成的Project,以及早期VS2005在beta版本时期的一个MSDN文档,
其实针对wm5.0的做法是:
编译选择ARM4,可以不起用混合调用,然后linker中的Target Machine选择Not Set
这样就可以编译通过不报任何错误了。。。虽然不知道为啥

微软论坛上说疑似一个bug。。。呵呵



转载修改自:http://www.mivi.name/blog/index_en.php?itemid=258#nucleus_cf

从我个人的测试结果,上面所提及的两项内容:Compile for Architecture 和Interwork ARM and ARM Thumb Calls两个选项都必须修改,程序才能够正常运行。而以上的这个问题是在先用WinCE 2003建立工程后,转换成Windows Mobile 5才会出现的,直接建立对应的工程而不进行转换是没有这个问题的。


转载于:https://www.cnblogs.com/lookou/archive/2007/04/30/733729.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值