【问题标题】:module machine type 'THUMB' conflicts with target machine type 'ARM'模块机器类型“THUMB”与目标机器类型“ARM”冲突
【发布时间】:2011-03-19 22:24:54
【问题描述】:

我有一个为 ARMV4 (Pocket PC 2003) 运行的 windows 移动应用程序

我们有一个新设备 XXXCE6 (ARMV4I),我们需要为它编译应用程序,我们按照以下步骤操作:

  1. 安装设备 SDK
  2. 构建-> 配置管理器 从活跃的解决方案平台中选择新的
  3. 对于 New Solutin 平台,我们选择了 XXXCE6 (ARMV4I),对于复制设置,我们选择了 Pocket PC 2003,并检查创建新项目平台 然后 清洁解决方案 重建解决方案我收到此错误:

coredll.lib(COREDLL.dll):致命错误 LNK1112:模块机器类型“THUMB”与目标机器类型“ARM”冲突

有什么想法吗?

谢谢

【问题讨论】:

    标签: c++ windows-mobile mfc pocketpc


    【解决方案1】:

    添加新配置永远不会奏效 - 我认为工具团队从未真正尝试过。它在 eVC 3.0 或 4.0 中不起作用,在 Studio 中仍然不起作用。

    使用应用向导创建一个新项目,选择您的 SDK。完成后,只需使用“添加现有”添加所有代码。

    顺便说一句,您的应用程序可能仍然可以使用旧项目和二进制文件运行。 ARMv4i 将毫无问题地运行 ARMv4 二进制文件。唯一的潜在问题是,如果您要从 Pocket PC 迁移到通用 CE 设备。如果应用程序使用任何 Pocket PC 特定的 API,这些调用将在 CE 下失败。

    【讨论】:

    • 唯一的潜在问题是,如果您从 Pocket PC 转移到通用 CE 设备,如果应用程序使用任何 Pocket PC 特定的 API,那么这些调用将在 CE 下失败。=> 这就是正在发生..应用程序运行但串口无法打开
    • 串行端口是不是 Pocket PC 特定的调用。它们在两个平台上的工作方式完全相同。如果它失败了,那是因为您的应用程序中存在代码错误,设备之间的端口信息更改或新平台上的端口驱动程序不起作用。
    【解决方案2】:
    1. 右键单击出现此错误的项目。

    2. 转到项目属性 -> 链接器 -> 命令行

    3. 将 MACHINE:ARM 更改为 MACHINE:THUMB

    reference

    【讨论】:

    • 这对我有用,但更好的是删除 /machine: 开关并使用 SDK 默认值。
    猜你喜欢
    • 2021-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多