Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.09.2010, 00:57   #1
vitalyisaev2
 
Регистрация: 07.05.2010
Сообщений: 8
По умолчанию error LNK2001

Прога компилируется, но не линкуется.
Цитата:
Linking...
nltsa.obj : error LNK2001: unresolved external symbol "void __cdecl arrangement(int,double,double,struc t point *)" (?arrangement@@YAXHNNPAUpoint@@@Z)
nltsa.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
Линковщик ругается на эту функцию. Что с ней не так?
Код:
struct point
{
	unsigned long number;
	unsigned short mera;
	double argument;
	double value;
	double mean;
	double sigma;
};

...

point *array;
	array = new point [(int)length];

...

int arrangement (int m, double argument, double value, point *array)
{
    for(int i=0; i<(length*m); i++)
        if((argument==array[i].argument) && (m==array[i].mera))
        {
            array[i].value+=value;
            array[i].number++;
            return 0;
        };
        array[array_number].mera=m;
        array[array_number].argument=argument;
        array[array_number].value=value;
        array[array_number].number=1;
        array_number++;    
}
vitalyisaev2 вне форума Ответить с цитированием
Старый 10.09.2010, 08:13   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

А покажите-ка место использования этой функции.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 10.09.2010, 11:51   #3
vitalyisaev2
 
Регистрация: 07.05.2010
Сообщений: 8
По умолчанию

Код:
...
struct point
{
    unsigned long number;
    unsigned short mera;
    double argument;
    double value;
    double mean;
    double sigma;
};
...
void cordim (double *A, int tau, int n, FILE *f2, point *array)
{
    void arrangement (int m, double argument, double value, point *array);
        ...
        // различные вычисления, необходимые для вызова arrangement
        ...
            arrangement (m, log10(e), log10(h_summ/(n*n)), array);     
        ...
}
int arrangement (int m, double argument, double value, point *array)
{
    for(int i=0; i<(length*m); i++)
        if((argument==array[i].argument) && (m==array[i].mera))
        {
            array[i].value+=value;
            array[i].number++;
            return 0;
        };
        array[array_number].mera=m;
        array[array_number].argument=argument;
        array[array_number].value=value;
        array[array_number].number=1;
        array_number++;    
        return 0;
}
...
int main(int argc, char* argv[])
{
...
point *array;
array = new point [(int)length];
cordim (..., array);
...
}
Вот более полный код, но ошибку я сам нашел - несоответствие прототипа функции (void) в вызывающей функции и самой функции (int). Большое спасибо!
vitalyisaev2 вне форума Ответить с цитированием
Старый 10.09.2010, 12:10   #4
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Ну, во-первых, у вас она разных типов: int и void.
Во-вторых, сделайте лучше так:
Код:
int arrangement (int m, double argument, double value, point *array);
void cordim (double *A, int tau, int n, FILE *f2, point *array)
{
        ...
        // различные вычисления, необходимые для вызова arrangement
        ...
            arrangement (m, log10(e), log10(h_summ/(n*n)), array);     
        ...
}

int arrangement (int m, double argument, double value, point *array)
{
    for(int i=0; i<(length*m); i++)
        if((argument==array[i].argument) && (m==array[i].mera))
        {
            array[i].value+=value;
            array[i].number++;
            return 0;
        };
        array[array_number].mera=m;
        array[array_number].argument=argument;
        array[array_number].value=value;
        array[array_number].number=1;
        array_number++;    
        return 0;
}
P.S. Не заметил в конце, что неактуально.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 10.09.2010, 12:16   #5
vitalyisaev2
 
Регистрация: 07.05.2010
Сообщений: 8
По умолчанию

Большое спасибо
vitalyisaev2 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ищу причину ошибки: Error in loading DLL, она же Error 48. hozpraktik Microsoft Office Excel 1 19.11.2009 12:39
Как решить проблему с Error in loading DLL (Error 48)? Klim Bassenger Microsoft Office Excel 4 23.10.2009 13:44
Что за ошибка - error LNK2001: unresolved external symbol __imp__glVertex3f@12 ? Selestis Общие вопросы C/C++ 2 16.08.2009 19:02
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main Debug/main.exe : fatal error LNK11 prefak Win Api 0 19.04.2009 16:51