zoukankan      html  css  js  c++  java
  • 报错C1189 #error: "No Target Architecture"

    根本原因:

    是因为单独包含了一些windows.h已经包含了的头文件如"fileapi.h","WinUser.h",但是却没有包含windows.h
    或者
    先包含了如"fileapi.h","WinUser.h",后包含windows.h,顺序不对

    先说解决方案:

    在代码中 加入include  “windows.h” 即可,或者调整顺序,把winows.h放在前面

    网上的解决方案:

    在项目中添加_AMD64_宏(其他三个也可以)也可以解决该问题
    具体方法:项目名称右键-->属性-->C/C++-->预处理器-->添加宏,如下所示:
    error C1189: #error :

     

    具体过程:

    我在调用ShellExecute 函数时提示错误 "No Target Architecture",代码简化如下:

    #include "stdafx.h"
    #include "WinUser.h"
    #include <ShellAPI.h>
    int main()
    {
        ShellExecute(0, NULL, L"http://www.baidu.com", NULL, NULL, SW_SHOWNORMAL);
        return 0;
    }

    定位错误位置在winnt.h

    #if defined(_AMD64_) || defined(_X86_)
    #define PROBE_ALIGNMENT( _s ) TYPE_ALIGNMENT( DWORD )
    #elif defined(_IA64_) || defined(_ARM_) || defined(_ARM64_)
    
    #define PROBE_ALIGNMENT( _s ) TYPE_ALIGNMENT( DWORD )
    #elif !defined(RC_INVOKED)
    #error "No Target Architecture"
    #endif

    原因也很简答,就是没有定义 (_AMD64_) 、(_X86_)这几个宏,编译器检查到,就抛出异常

    在调用 ShellExecute时,SW_SHOWNORMAL提示找不到,查了下,SW_SHOWNORMAL这玩意是在"WinUser.h"中定义,于是#include "WinUser.h"

    "WinUser.h"里面定义了所有 user32.dll 导出的 API 以及各种宏定义,例如代表消息ID 的 WM_* 宏,与 Windows UI 相关的大部分 API 都是在 winuser.h 中定义的。这个文件是被include在了windows.h中的

    所以一般都是直接 #include <windows.h>即可,而上面说到的 (_AMD64_) 、(_X86_)也是在windows.h 中先定义的,所以报错了

    在此例中,winuser和 <ShellAPI.h>都可以删除,直接包含一个windows.h即可

    windows.h下的重要的头文件有哪些:

    windows.h是一个最重要的头文件,它包含了其他Windows头文件,这些头文件的某些也包含了其他头文件。这些头文件中最重要的和最基本的是:

    WINDEF.H 基本数据类型定义
    WINNT.H 支持Unicode的类型定义
    WINBASE.H Kernel(内核)函数
    WINUSER.H 用户界面函数     //本例中shellexecute就定义在此
    WINGDI.H 图形设备接口函数

  • 相关阅读:
    POJ3094 UVALive3594 HDU2734 ZOJ2812 Quicksum【进制】
    UVALive5583 UVA562 Dividing coins
    POJ1979 HDU1312 Red and Black【DFS】
    POJ1979 HDU1312 Red and Black【DFS】
    POJ2386 Lake Counting【DFS】
    POJ2386 Lake Counting【DFS】
    HDU4394 Digital Square
    HDU4394 Digital Square
    UVA213 UVALive5152 Message Decoding
    UVA213 UVALive5152 Message Decoding
  • 原文地址:https://www.cnblogs.com/kevinWu7/p/10163436.html
Copyright © 2011-2022 走看看