关于用命令行来编译PPC和程序的问题。。。急

lioncui 2008-05-29 05:23:23
我用
call "%VS80COMNTOOLS%"\vsvars32.bat
将VS的环境起来,然后用
DEVENV /useenv D:\work\test3\test3.sln /rebuild "release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"
编译,出现在了如下问题
uafxcw.lib(appcore.obj) : fatal error LNK1112: module machine type 'ARM' conflicts with target machine type 'X86'

test3.sln是一个非常简单的PPC对话框工程,如果把 /useenv 去掉,就可以编译通过。。

大家谁碰到过这个问题啊。


备注:在PPC上有这个问题,如果是VC++的程序不会有这个问题。
...全文
223 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
lioncui 2008-06-02
  • 打赏
  • 举报
回复
问题己解决

注:
我要和就是替代VS的设置
shuiyan 2008-05-31
  • 打赏
  • 举报
回复
/useenv Use PATH, INCLUDE, LIBPATH, and LIB environment variables
instead of IDE paths for VC++ builds.

貌似lenux说的对,不用这个开关,才是用的VS2005的设置,用了的话,反而是替代了。
lenux 2008-05-30
  • 打赏
  • 举报
回复
在属性中linker-command line
看看有什么东西
lioncui 2008-05-30
  • 打赏
  • 举报
回复
我要在哪里设置CPU类型开关呢?


我是用VS建的一个PPC的非常简历的dailog工程,CPU类型应该已经设好了吧

载舟之水 2008-05-30
  • 打赏
  • 举报
回复
你的工程文件有问题的,你漏了CPU 类型开关,而且不应该选择ARM,WINCE的PE格式默认标记用THUMB。
lenux 2008-05-30
  • 打赏
  • 举报
回复
找了msdn,发现理解不太正确。


/useenv
是用来加载PATH、INCLUDE、LIBS 和 LIBPATH 等环境变量

这个没错。

但是这些环境变量是在vsvars32.bat文件中定义的,而不是vs2005中的那些。

而不用/useenv ,却是用vs2005中的设置。

看这个文章,应该能看明白。
http://msdn.microsoft.com/zh-cn/library/f35ctcxw.aspx
lioncui 2008-05-30
  • 打赏
  • 举报
回复
用 call "%VS80COMNTOOLS%"\vsvars32.bat 将环境起来
在 vsvars32.bat 中有这样一句话:
@echo Setting environment for using Microsoft Visual Studio 2005 x86 tools.

这句话是不是说起来的环境是 x86 的环境???
lioncui 2008-05-30
  • 打赏
  • 举报
回复
我自己已经set 如下内容
@set INCLUDE=%VCInstallDir%\ce\include;D:\Program Files\Windows CE Tools\wce500\Windows Mobile 5.0 Pocket PC SDK\include\ARMV4I;D:\Program Files\Windows CE Tools\wce500\Windows Mobile 5.0 Pocket PC SDK\include;$(VSInstallDir)SmartDevices\SDK\SQL Server\Mobile\v3.0;$(VCInstallDir)ce\atlmfc\include;%INCLUDE%

@set LIB=D:\Program Files\Windows CE Tools\wce500\Windows Mobile 5.0 Pocket PC SDK\Lib\ARMV4I;%VCInstallDir%\ce\lib\ARMV4I;%VCInstallDir%\ce\atlmfc\lib\ARMV4I;%LIB%

lioncui 2008-05-30
  • 打赏
  • 举报
回复
不使用 /useevn 当然可以通过
我现在一定要使用这个 因为我要动态的加载 include 和 lib 路径,所以必须用 /useevn

载舟之水 2008-05-30
  • 打赏
  • 举报
回复
这个很简单的,很久以前就成功了,你看看DEVENV /? 的说明,很详细了。

可以不使用/useenv 来做,直接 devenv 后面跟开关和 sloution file name,sloution and project name

首先你要确保.sln文件可以在VS界面下编译通过。

Additional options: 里面的内容应该是

/subsystem:windowsce,5.01 /machine:THUMB

or

/subsystem:windowsce,5.01 /machine:THUMB /ARMPADCODE

我上面已经说过了,不加THUMB你在VS里都编译不了。
lioncui 2008-05-30
  • 打赏
  • 举报
回复
再说白一点吧

就是用VS生成一个非常简单的PPC Dailog程序,然后用命令
DEVENV /useenv ............
执行成功

如果成功了,告诉我是怎么成功的
shuiyan 2008-05-30
  • 打赏
  • 举报
回复
/QRarch4 表示以ARM4体系来编译,兼容ARMV4I,但是不包括ARMV4T

再加上 /subsystem:windowsce,4.20 /machine:ARM /ARMPADCODE
lioncui 2008-05-30
  • 打赏
  • 举报
回复
4楼,留个MSN了
我的是 qincui@tom.com
lioncui 2008-05-30
  • 打赏
  • 举报
回复
在Project->Property Pages->Configuration Properties->Linker->Command Line下有这些内容:

All options:
/OUT:"Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\Release\test3.exe" /INCREMENTAL:NO /NOLOGO /MANIFEST:NO /NODEFAULTLIB:"oldnames.lib" /DEBUG /PDB:"d:\work\test3\test3\Windows Mobile 5.0 Pocket PC SDK (ARMV4I)\Release\test3.pdb" /OPT:REF /OPT:ICF /ENTRY:"WinMainCRTStartup" /ERRORREPORT:PROMPT ole32.lib oleaut32.lib uuid.lib

Additional options:
/subsystem:windowsce,5.01

请问我下一怎么做呢
lenux 2008-05-29
  • 打赏
  • 举报
回复
/useenv
是用来加载PATH、INCLUDE、LIBS 和 LIBPATH 等环境变量

看lz的问题应该是你的sdk选择不对,或者设置的cpu类型不对。

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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