在MingW下,简单的C ++程序没有在Windows上链接

时间:2011-07-08 23:05:03

标签: c++ mingw

我不知道为什么我无法链接这个程序。首先,这是我的头文件,gcd.h:

#ifndef GCD_H
#define GCD_H

/**
 * Calculate the greatest common divisor of two integers.
 * Note: gcd(0,0) will return 0 and print an error message.
 * @param a the first integer
 * @param b the second integer
 * @return the greatest common divisor of a and b
 */

long gcd(long a, long b);

#endif

这是我的gcd.cpp文件:

#include "gcd.h"
#include <iostream>
using namespace std;

long gcd(long a, long b) {

    // if a and b are both zero, print an error and return 0
    if ( (a==0) && (b==0) ) {
        cerr << "WARNING: gcd called with both arguments equal to zero." << endl;
        return 0;
    }

    // Make sure a and b are both nonnegative
    if (a<0) {
        a = -a;
    }
    if (b<0) {
        b = -b;
    }

    // if a is zero, the answer is b
    if (a==0) {
        return b;
    }

    // otherwise, we check all the possibilities from 1 to a
    long d; // d will hold the answer

    for (long t=1; t<=a; t++) {
        if ( (a%t==0) && (b&t==0) ) {
            d = t;
        }
    }

    return d;
}

主要问题是当我编译时,它返回错误

  

C:/ MinGW的/ bin中/../ LIB / GCC /的mingw32 / 4.5.2 /../../../ libmingw32.a(main.o),此:main.c中:(文本+ 0xd2。 ):   未定义引用`WinMain @ 16'colle2:ld返回1退出   状态

我不明白这意味着什么。

请帮帮忙?

好的,实际上有人可以修改我的代码以便它正常运行吗?这是最好的选择,因为那时我真的明白我做错了什么。

3 个答案:

答案 0 :(得分:5)

你的main函数(程序的入口点)在哪里?

是的,我喜欢你写的“主要问题”:)

答案 1 :(得分:0)

这不是一个程序,它只是一个功能。

它可以独立编译,但不能链接到可执行文件,因为它没有入口点。链接器抱怨缺少入口点(根据编译器的启动代码所期望的名称)。

答案 2 :(得分:0)

您是如何编译代码的?它应该是这样的:

g++ gcd.cpp -o gcd

不要#include <windows.h>或将-mwindows添加到您的命令中。