Форум программистов, компьютерный форум CyberForum.ru

Ошибка Unresolved external . . . from OBJ - C++

Восстановить пароль Регистрация
 
YoungProgrammer
4 / 4 / 1
Регистрация: 18.01.2011
Сообщений: 206
21.10.2012, 15:48     Ошибка Unresolved external . . . from OBJ #1
Код программы.
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  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
21.10.2012, 15:50     Ошибка Unresolved external . . . from OBJ #2
Цитата Сообщение от YoungProgrammer Посмотреть сообщение
void SumSorting(int GetArrayMain, int arraySize)
Не соответствует тому, что написано в h файле
YoungProgrammer
4 / 4 / 1
Регистрация: 18.01.2011
Сообщений: 206
21.10.2012, 15:51  [ТС]     Ошибка Unresolved external . . . from OBJ #3
Цитата Сообщение от I.M. Посмотреть сообщение
Не соответствует тому, что написано в h файле
а как правильно сделать а то я не понимаю.
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
21.10.2012, 15:55     Ошибка Unresolved external . . . from OBJ #4
Как минимум, можно скопировать то же самое, что написано в хедере
YoungProgrammer
4 / 4 / 1
Регистрация: 18.01.2011
Сообщений: 206
21.10.2012, 15:59  [ТС]     Ошибка Unresolved external . . . from OBJ #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
таже самая ошибка
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
21.10.2012, 16:05     Ошибка Unresolved external . . . from OBJ #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);
YoungProgrammer
4 / 4 / 1
Регистрация: 18.01.2011
Сообщений: 206
21.10.2012, 16:23  [ТС]     Ошибка Unresolved external . . . from OBJ #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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.10.2012, 16:49     Ошибка Unresolved external . . . from OBJ
Еще ссылки по теме:

C++ Ошибка Unresolved external
C++ [Linker Error] Unresolved external 'Sort(int, int)' referenced from H:\INFORMATIC\5\UNIT1.OBJ
LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16 C++

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

Или воспользуйтесь поиском по форуму:
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
21.10.2012, 16:49     Ошибка Unresolved external . . . from OBJ #8
Раз у вас есть рабочий код, просто посмотрите, как преподаватель объявил функцию в h файле, как он вызывает и тд. И сравните с тем, что было у вас
Yandex
Объявления
21.10.2012, 16:49     Ошибка Unresolved external . . . from OBJ
Ответ Создать тему
Опции темы

Текущее время: 14:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru