1、vs2005开发WM5时,编译器和linker的选项配合问题

链接:http://www.mivi.name/blog/index_en.php?itemid=258

首先说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&siteid=1&sb=0&d=1&at=7&ft=11&tf=0&pageid=1 

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 

这样就可以编译通过不报任何错误了。。。

2、fatal error LNK1112: module machine type 'THUMB' conflicts with target machine type 'ARM'

解决方法:

在WinCE下编程时,常常出现上述错误可以在Project->Setting->Link下将MACHINE:X86改成MACHINE:ARM,如果还不行,直接改为MACHINE:THUMB.

3.WM5.0下,fatal error LNK1112:错误解决方法

将工程从Pocket PC 2003转到Windows Mobile5.0 Pocket PC SDK下,就会出现coredll.lib(COREDLL.dll) : fatal error LNK1112: module machine type 'THUMB' conflicts with target machine type 'ARM',解决方法:ALT+F7打开工程设置,在Configuration Properties->Linker->Command
Line,在Additional options:把原来的 /subsystem:windowsce,4.20 /machine:ARM /ARMPADCODE删除,输入 /subsystem:windowsce,5.01就可以,注意此种方法仅适用由VC8.0所建的工程,并不适用于由EVC建的工程转到WM5.0下。

4.在VS 2005中建立的Win32工程总出现这样的运行错误:"MSVCR80D.dll not found"

转:http://www.cppblog.com/pengkuny/archive/2007/03/21/20332.html

在VS 2005中建立的Win32工程总出现这样的运行错误:"MSVCR80D.dll not found"

好几次了,总结各种解决方法如下:



     原因:(不知道在说啥)由于VS.net 2005 采用了一种新的DLL方案,搞成一个exe还要配有一个manifest文件(一般在嵌入文件里了,所以看不到,不过也可以不嵌入,这样会生产一个<程序名>.exe.manifest的文件,没它exe自己就转不了了:)这是个新功能,微软弄了个新工具(mt.exe),结果不好用,好像是fat32下时间戳有问题(在ntfs下这个问题就没有了),搞得manifest有时嵌入不到exe中(默认配置是嵌入的,所以就报错找不到 dll了。



      解决方法:(任选一个即可)

1.生成Debug版本项目时,未打开连接器的/MANIFEST开关。在 'Project Properties->Configuration Properties->Mainfest Tool->Input and Output->Embed Manifest' 将 YES 改成 NO 就可以了.



2.在“属性->配置属性->清单工具->常规“下有一个”使用FAT32解决办法,把它选成是,就可以了。



3、如果建立的是Win32的项目的话可以在项目-(项目名)属性-配置属性-C/C++-代码生成-运行时库 将其改为多线程调试 /MTd



4、在C:\Program Files\Microsoft Visual Studio 8\VC\redi

st\Debug_NonRedist\x86\Microsoft.VC80.DebugCRT 下找到了下列文件:



msvcm80d.dll

msvcp80d.dll

msvcr80d.dll

Microsoft.VC80.DebugCRT.manifest



把这几个文件拷贝到目标机器上,与运行程序同一文件夹或放到system32下,就可以运行那个程序了。



5、将Debug版本中第一次生成的.res文件删除后重新Build一次



6、采用Release模式,不要采用Debug模式就可以了

试过第一个,确实可以。

VS2005下开发PPC2003和WM50编译器一些设置的更多相关文章

  1. Linux (Ubuntu12.04) 下开发工具安装和使用

    Linux (Ubuntu12.04) 下开发工具安装和使用 这里讲述的是关于在ubuntu12.04下面安装和使用各种IDE 开发环境和初步使用的知识.说一下背景:很多的开发基本都是在linux操作 ...

  2. 在VS2010下开发C语言程序

    妈蛋,我发现VS下开发C语言,并不是把文件名改成.C的就行了.VS2010不支持C99.  也就是函数局部变量声明必须放在函数的开头.难怪,我从Linux下移植过来的.c工程怎么是编译错误呢,发现是变 ...

  3. vs下开发windows服务程序

    一. VS2012下开发Windows服务 1. 打开VS2012,新建项目,选择Windows服务,此处我以开发一个定时自动发送邮件的服务来做介绍,如下图: 2. 创建好后,编译器会自动创建一些文件 ...

  4. java入门---windows和Linux,UNIX,Solaris,FreeBSD下开发环境配置

        首先来看Windows下的操作.我们需要下载java开发工具包JDK.下载地址:http://www.oracle.com/technetwork/java/javase/downloads/ ...

  5. gcc和MinGW的异同(在cygwin/gcc做的东西可以无缝的用在linux下,没有任何问题,是在windows下开发linux程序的一个很好的选择)

    cygwin/gcc和MinGW都是gcc在windows下的编译环境,但是它们有什么区别,在实际工作中如何选择这两种编译器. cygwin/gcc完全可以和在linux下的gcc化做等号,这个可以从 ...

  6. Linux下开发STM32单片机

    一开始学习51单片机就是用的MDK这个IDE软件,IDE软件虽然看起来直观好像更加容易入门(因为有界面看起来很形象),但是实际上IDE却是向我们这些入门人员隐藏了背后真实存在的过程,让我们以为编译就是 ...

  7. OS X下开发!ios系统贪食蛇!——from cocos2d-x 3.0

    前几天用cocos2d-x写了个贪食蛇!这次是全然在osx下开发的.基本的思路是这种我建立了一个Snake类,当中有两个构造函数一个是用于存放蛇身体sprite的图片和Snake的X坐标和Y坐标.另外 ...

  8. Python在Windows下开发环境配置汇总

    最近比较关注学习Python方面的资料和课程,由于Python本身基本都是在Linux下开发,本人windows用习惯了初用Linux各种别扭啊. 下面将我在配置Windows环境下的禁言写出来,与大 ...

  9. 【转】android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创)

    原文网址:http://www.cnblogs.com/zdz8207/archive/2012/11/27/android-ndk-install.html android 最新 NDK r8 在w ...

随机推荐

  1. @Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction区别

    ASP.NET MVC 中@Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction区别 对这四个的区别做一个总结,清理一下思路 ...

  2. Limit参数优化MySQL查询的方法

    在做一些查询时,总希望能避免数据库引擎做全表扫描,因为全表扫描时间长,而且其中大部分扫描对客户端而言是没有意义的.那么,在mysql中有那些方式是可以避免全表扫面?除了通过使用索引列或分区等方式来进行 ...

  3. 使用FileResult导出txtl数据文件

    public FileResult ExportMobileNoTxt(SearchClientModel model){ var sbTxt = new StringBuilder(); ; i & ...

  4. nodejs的模块系统(实例分析exprots和module.exprots)

    前言:工欲善其事,必先利其器.模块系统是nodejs组织管理代码的利器也是调用第三方代码的途径,本文将详细讲解nodejs的模块系统.在文章最后实例分析一下exprots和module.exprots ...

  5. PS 颜色表大全-颜色中文名(1)

    颜色中文名  鸨色#f7acbc 赤白橡#deab8a 油色#817936 绀桔梗#444693 踯躅色#ef5b9c 肌色#fedcbd 伽罗色#7f7522 花色#2b4490 桜色#feeeed ...

  6. 两年的坚持,最后还是决定将ISoft开源

    还记得2011年9月份,我在上大四,本来想着考研能上个好点的学校,可我怎么就不愿去自习室上自习.每天晚上睡觉前都告诉自己明天早晨一定早起去上自习,但又每次醒来都不想起床啊,懒,没办法.睡到不想再睡了才 ...

  7. Spring execution 表达式

    execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern) th ...

  8. why you write code so slow.

    今天我们要写一个日历表,用以存储所有的节假日. 虽然这个表设计的并不是很妙.但是将就着继续了. 让小弟把该表数据初始化3-5年的,结果一上午还没有出来,着急了,自己写了一个初始化的工具. 分享出来. ...

  9. NSFileHandle 和 NSFileManager的一些用法

    文件操作 NSFileManager 常见的NSFileManager文件的方法: -(BOOL)contentsAtPath:path 从文件中读取数据 -(BOOL)createFileAtPat ...

  10. MySQL的基本命令

    MySQL的基本命令 启动:net start mySql; 进入:mysql -u root -p/mysql -h localhost -u root -p databaseName; 列出数据库 ...