Простая программа на С ++ не связывается в Windows под MingW - PullRequest
2 голосов
/ 09 июля 2011

Я не знаю, почему я не могу связать эту программу. Прежде всего, это мой заголовочный файл, 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 / бен /../ Библиотека / GCC / mingw32 / 4.5.2 /../../../ libmingw32.a (main.o): main.c :( текст + 0xd2. ): неопределенная ссылка на `WinMain @ 16 'collect2: ld вернул 1 выход статус

Я не понимаю, что это значит.

Пожалуйста, помогите?

Хорошо, может кто-нибудь просто изменить мой код, чтобы он работал правильно? Это лучшая ставка на данный момент, потому что тогда я действительно пойму, что я сделал не так.

Ответы [ 3 ]

5 голосов
/ 09 июля 2011

где ваша функция main (точка входа в программу ..)?

Кстати мне нравится, что вы написали "главная проблема":)

0 голосов
/ 09 июля 2011

Как вы компилируете свой код? Это должно быть что-то вроде:

g++ gcd.cpp -o gcd

Не #include <windows.h> и не добавляйте -mwindows к вашей команде.

0 голосов
/ 09 июля 2011

Это не программа, это отдельная функция.

Он может быть независимо скомпилирован, но не может быть связан с исполняемым файлом, поскольку не имеет точки входа. Компоновщик жалуется на отсутствующую точку входа (в соответствии с именем, ожидаемым кодом запуска вашего компилятора).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...