Помощ - Търси - Регистрирани - Календар
Пълна версия: Добавяне на файлове в 'Borland C++'
UniBG Forums > Дискусии > Dexter's Lab > Програмиране
Guest
Здравейте! Как да добавя хедър файлове в проект при 'Borland C++'? Например имам:
CODE
#include "test.h"
void main()
{
  do_test();
}

И ми изписва грешка?
int21h
QUOTE(Guest @ Oct 27 2007, 10:31 PM) *
...
И ми изписва грешка?


Каква грешка ?
guest
Info :Transferring to C:\BC5\BIN\tlink.exe @D:\CPP\DRAWIN~1\main.r$p
Error: (1,1):Undefined symbol draw_rectangle(int,int) in module main.cpp
Info :Transferring to C:\BC5\BIN\tlink.exe @D:\CPP\DRAWIN~1\main.r$p
Error: (1,1):Undefined symbol draw_rectangle(int,int) in module main.cpp
int21h
QUOTE(guest @ Oct 28 2007, 01:23 AM) *
Info :Transferring to C:\BC5\BIN\tlink.exe @D:\CPP\DRAWIN~1\main.r$p
Error: (1,1):Undefined symbol draw_rectangle(int,int) in module main.cpp
Info :Transferring to C:\BC5\BIN\tlink.exe @D:\CPP\DRAWIN~1\main.r$p
Error: (1,1):Undefined symbol draw_rectangle(int,int) in module main.cpp


Я ги качи някъде тези файлове и дай линк или ги post-ни тук ако не са големи. Очевидно проблема не е в начина на include, а в самия сорс...

Като например, какво е "draw_rectangle( int, int)" ?
guest
Благодаря за вниманието, но грешката наистина е в сорса, във файла с интерфейса съм написал:
CODE
draw_rectangle(int a, int b);[/b]
, а във файла с реализацията:
[code]
void draw_rectangle(int a, int b){...
.
Макар по принцип 'void' не би трябвало да ми прави проблем, но...
int21h
QUOTE(guest @ Oct 29 2007, 01:52 PM) *
...
Макар по принцип 'void' не би трябвало да ми прави проблем, но...


В случая си е съвсем нормално да направи проблем.
Polizei
Така, ето ти примерна реализация (съжалявам, че не е BC, ползвам GCC. Предполагам че синтаксиса на LINK-ера е същия, или поне подобен)

main.c:
CODE
#include "test.h"
   int main(int argc, char *argv[]) {
     test(5,6);
     return 0;
   }


test.h
CODE
#ifndef HAVE_TEST_H
   #define HAVE_TEST_H
   void test(int, int);
   #endif // defined(HAVE_TEST_H)


test.c
CODE
#include "test.h"
   void test(int a, int b) {
     printf("%u", a+b);
   }


Компилираш само обектните файлове, и накрая при линк-ване на крайния изпълним файл, просто трябва да укажеш и двата (или колкото там са) обектни файла:

make.bat
CODE
gcc -c -o test.o test.c
   gcc -c -o main.o main.c
   gcc -o main.exe main.o test.o


EDIT: И един полезен съвет, що не ползваш и ти GCC, а се мъчиш като грешен дявол с безмозъчните продукти на Borland?
Guest
Честно казано, заради функции като 'gotoxy()', 'puttext()' && 'etc.'. Е да, могат чрез 'WIN32API', да се постигне същия ефект, но...
Това е семпла версия на форума. За да видиш пълната версия, която има повече информация, по-добра подредба и снимки, натисни тук.
Invision Power Board © 2001-2008 Invision Power Services, Inc.