4 / 4 / 3
Регистрация: 18.01.2011
Сообщений: 206
1

Ошибка Unresolved external . . . from OBJ

21.10.2012, 15:48. Показов 643. Ответов 7
Метки нет (Все метки)

Код программы.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include "SumSorting.h"
 
char* InputFileName = "intput.dat";
int c_array[100] = {0};
 
void SetArrayElement(int Size)
{
 
        FILE *rF = NULL;
        char *El;
        int i;
        rF = fopen(InputFileName, "r");
        for (i = 1; i != Size; i++)
        {
                fread(&c_array[i], sizeof(int), 1, rF);
                printf("%d\n", c_array[i]);
        }
        fclose(rF);
        getchar();
}
 
int GetArrayElement(int size)
{
        return(c_array[size]);
}
 
#pragma argused
 
main ()
{
        int Count = 10;
        SetArrayElement(Count);
        SumSorting(GetArrayElement, Count);
        SetArrayElement(Count);
        getchar();
}
Код юнита
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#pragma hdrstop
#include "SumSorting.h"
 
void SumSorting(int GetArrayMain, int arraySize)
{
        int i;
        int sum1 = 0;
        int sum2 = 0;
        int num1;
        int num2;
        int numArrayTemp;
        int GetArray[arraySize];
        char Sorted = 'N';
        for (i = 0, i != arraySize, i++)
        {
                GetArray[i] = GetArrayMain[i];
        }
        while (Sorted == 'N')
        {
                Sorted = 'Y';
                for (i = 0, i != arraySize, i++)
                {
                        sum1 = 0;
                        sum2 = 0;
                        num1 = GetArray[i];
                        num2 = GetArray[i+1];
                        while (num1 != 0)
                        {
                                sum1 += num1%10;
                                n /= 10;
                        }
                        while (num2 != 0)
                        {
                                sum2 += num2%10;
                                n /= 10;
                        }
                        if (num1 > num2) /// GetArray[i] > GetArray[i+1]
                        {
                                numArrayTemp = GetArray[i];
                                GetArray[i] = GetArray[i+1];
                                GetArray[i+1] = numArrayTemp;
                                Sorted = 'N';
                        }
                }
        }
        for (i = 0, i != arraySize, i++)
        {
                printf("%d\n",GetArray[i]);
        }
}
//---------------------------------------------------------------------------
 
#pragma package(smart_init)
код юнита.h
C++
1
2
3
4
5
6
7
8
//---------------------------------------------------------------------------
 
#ifndef SumSortingH
#define SumSortingH
 
void SumSorting(int (*GetArray)(int), int arraySize);
//---------------------------------------------------------------------------
#endif
Миниатюры
Ошибка Unresolved external . . . from OBJ  
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.10.2012, 15:48
Ответы с готовыми решениями:

Ошибка: Unresolved external '_main' referensed from d:c5libcox32.obj
Unresolved external '_main' referensed from d:c5libcox32.obj вот текст но текст уж точно...

ошибка [Linker Error] Unresolved external '_main' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\C0X32.OBJ
При компиляции программы борланд выдает ошибку Unresolved external '_main' referenced from...

main.obj : error LNK2019: unresolved external symbol
Класс Circle (круг). Класс хранит Декартовы координаты центра круга, а также значения точки, на...

LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16
Помогите разобрать в ошибке. LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol...

7
574 / 557 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
21.10.2012, 15:50 2
Цитата Сообщение от YoungProgrammer Посмотреть сообщение
void SumSorting(int GetArrayMain, int arraySize)
Не соответствует тому, что написано в h файле
0
4 / 4 / 3
Регистрация: 18.01.2011
Сообщений: 206
21.10.2012, 15:51  [ТС] 3
Цитата Сообщение от I.M. Посмотреть сообщение
Не соответствует тому, что написано в h файле
а как правильно сделать а то я не понимаю.
0
574 / 557 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
21.10.2012, 15:55 4
Как минимум, можно скопировать то же самое, что написано в хедере
0
4 / 4 / 3
Регистрация: 18.01.2011
Сообщений: 206
21.10.2012, 15:59  [ТС] 5
Теперь коды такие:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#pragma hdrstop
#include "SumSorting.h"
 
void SumSorting(int GetArrayMain(int), int arraySize)
{
        int i;
        int sum1 = 0;
        int sum2 = 0;
        int num1;
        int num2;
        int numArrayTemp;
        int GetArray[arraySize];
        char Sorted = 'N';
        for (i = 0, i != arraySize, i++)
        {
                GetArray[i] = GetArrayMain[i];
        }
        while (Sorted == 'N')
        {
                Sorted = 'Y';
                for (i = 0, i != arraySize, i++)
                {
                        sum1 = 0;
                        sum2 = 0;
                        num1 = GetArray[i];
                        num2 = GetArray[i+1];
                        while (num1 != 0)
                        {
                                sum1 += num1%10;
                                n /= 10;
                        }
                        while (num2 != 0)
                        {
                                sum2 += num2%10;
                                n /= 10;
                        }
                        if (num1 > num2) /// GetArray[i] > GetArray[i+1]
                        {
                                numArrayTemp = GetArray[i];
                                GetArray[i] = GetArray[i+1];
                                GetArray[i+1] = numArrayTemp;
                                Sorted = 'N';
                        }
                }
        }
        for (i = 0, i != arraySize, i++)
        {
                printf("%d\n",GetArray[i]);
        }
}
//---------------------------------------------------------------------------
 
#pragma package(smart_init)
C++
1
2
3
4
5
6
7
8
//---------------------------------------------------------------------------
 
#ifndef SumSortingH
#define SumSortingH
 
void SumSorting(int GetArrayMain(int), int arraySize);
//---------------------------------------------------------------------------
#endif
таже самая ошибка
0
574 / 557 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
21.10.2012, 16:05 6
Указатели на функцию не так делаются.
C++
1
2
3
4
5
6
7
8
9
10
//это пишем в h
typedef std::funtcion<int(int)> FnGetInt;
 
void SumSorting(const FnGetInt& GetArrayMain, int arraySize);
 
//так вызываем из cpp
SumSorting(std::bind(GetArrayElement), Count);
 
//так работаем с этим в SumSorting
GetArray[i] = GetArrayMain(i);
0
4 / 4 / 3
Регистрация: 18.01.2011
Сообщений: 206
21.10.2012, 16:23  [ТС] 7
У преподавателя почти такой же код как у меня но у него все работает.

Добавлено через 11 минут
Вот его код
главная программа
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#pragma hdrstop
 
#include <stdio.h>
#include <Assert.h>
#include "AbstractSort.h"
 
const int ELEMENTS_COUNT = 100;
 
int g_array[ELEMENTS_COUNT];
 
int GetElementValue(unsigned int index)
{
        assert(index < ELEMENTS_COUNT);
        if (index < ELEMENTS_COUNT)
        {
                return g_array[index];
        }
        else
        {
                return 0;
        }
}
 
#pragma argsused
int main(int argc, char* argv[])
{
        for (int i = 0; i < ELEMENTS_COUNT; i++)
        {
                g_array[i] = ELEMENTS_COUNT - i + 1;
        }
 
        int evenCount = 0, oddCount = 0;
        CountOddAndEvenValues(GetElementValue, ELEMENTS_COUNT, &evenCount, &oddCount);
        printf("Even count: %d \n", evenCount);
        printf("Odd count: %d \n", oddCount);
        return 0;
}
юнит
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#pragma hdrstop
 
#include <Assert.h>
#include "AbstractSort.h"
 
void CountOddAndEvenValues(int(*getElementFunc)(unsigned int),
                                int arraySize, int* oddValuesCount,
                                int* evenValuesCount)
{
        assert(getElementFunc);
        assert(arraySize > 0);
        assert(oddValuesCount);
        assert(evenValuesCount);
        if ((!getElementFunc) || (arraySize <= 0)
                || (!oddValuesCount) || (!evenValuesCount))
        {
                oddValuesCount = 0;
                evenValuesCount = 0;
                return;
        }
        
        for (int i = 0; i < arraySize; i++)
        {
                int value = getElementFunc(i);
                if (value%2 == 0)
                {
                        (*oddValuesCount)++;
                }
                else
                {
                        (*evenValuesCount)++;
                }
        }
}
 
 
#pragma package(smart_init)
юнит.h
C++
1
2
3
4
5
6
7
8
#ifndef AbstractSortH
#define AbstractSortH
 
void CountOddAndEvenValues(int(*getElementFunc)(unsigned int),
                                int arraySize, int* oddValuesCount,
                                int* evenValuesCount);
 
#endif
0
574 / 557 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
21.10.2012, 16:49 8
Раз у вас есть рабочий код, просто посмотрите, как преподаватель объявил функцию в h файле, как он вызывает и тд. И сравните с тем, что было у вас
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.10.2012, 16:49
Помогаю со студенческими работами здесь

[Linker Error] Unresolved external '_main' referenced from C:\PROGRAM FILES (X86)\BORLAND\CBUILDER6\LIB\C0X32.OBJ
незнаю куда функцию main() #include &lt;cstring&gt; #define BASE 10 //ñèñòåìà ñ÷èñëåíèÿ...

[Linker Error] Unresolved external 'Sort(int, int)' referenced from H:\INFORMATIC\5\UNIT1.OBJ
понять не могу откуда, собственно, ошибка, да что там. Вот код ...

Ошибка Unresolved external
Доброго времени суток! Начал изучать С++. Пример прямо из учебника. Ошибка известная. Но...

Ошибка линковщика Unresolved External
Всем доброго времени! Проблема вот с этим: #include &lt;iostream&gt; #include &lt;conio&gt; using...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru