【问题标题】:C++ header file gives Windows incompatability errorC++ 头文件给出 Windows 不兼容错误
【发布时间】:2017-01-25 11:16:56
【问题描述】:

尝试创建 .h 文件以存储类时,如下例所示:

#ifndef TRIANGLE64_H
#define TRIANGLE64_H

class Triangle64{
public:

 Triangle64();

 double getArea();

 void destroy(); //Frees the allocated memory

private:

//Variables reflecting the properties of the triangle
 double Base;
 int N_ulps;
 double s;
 double Area;
};

#endif

我返回错误:

此版本的 C:\Users\ezio1\AppData\Local\Temp\Triangle64.exe 与您运行的 Windows 版本不兼容。检查您计算机的系统信息,然后联系软件发行商。

这似乎很奇怪,因为我没有尝试使用此代码创建 .exe 文件(为了完整起见,我还使用 gcc 编译器运行 Windows 10)。

我也尝试忽略错误消息并尝试从标头创建类文件:

#include "Triangle64.h"

//Constructor
Triangle64::Triangle64(){

}

但是,这一次代码甚至没有运行,并且返回了错误消息

c:/mingw/bin/../lib/gcc/mingw32/5.3.0/../../../libmingw32.a(main.o):(.text.startup+0xa0):未定义对“WinMain@16”的引用 collect2.exe:错误:ld 返回 1 个退出状态

这可能是我安装编译器的问题还是与操作系统有关?

【问题讨论】:

  • 缺少其他代码,您还没有向我们展示您是如何尝试构建应用程序的。包括使用的makefile或命令行会很好。第二个问题见stackoverflow.com/questions/5259714/…
  • 将 -m64 / -m32 标志添加到您的链接行。你能在这里显示链接命令吗?
  • 请为第一个错误发布一个 MCVE,并尝试更好地描述您的问题。您在“输入 .h 文件”和“返回错误”之间遗漏了很多步骤。首先你说你不是试图创建一个EXE文件,但后来你似乎试图编译和运行代码。 (不创建EXE文件就无法编译运行)

标签: c++ gcc


【解决方案1】:

根据第二条错误消息,您似乎正在构建一个 16 位应用程序。由于 x86 架构的限制,64 位版本的 Windows 无法运行 16 位可执行文件。

更改编译器设置以构建 32 位或 64 位代码。

【讨论】:

  • @M.M 那么WinMain@16 来自哪里?错误消息是您在 16 位应用程序中看到的错误消息。
  • 那是Win32的入口点的名字(别问我为什么)
猜你喜欢
  • 2016-07-26
  • 1970-01-01
  • 2016-04-09
  • 2018-04-05
  • 2020-06-23
  • 2012-09-13
  • 2014-04-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多