PDA

View Full Version : RUN کردن برنامه های extern



Gold_cpp
پنج شنبه 13 آبان 1389, 23:19 عصر
سلام به همگی
این برنامه رو چطور میتونم Compile کنم !

#include <conio.h>
#include <iostream.h>
extern void f();
extern int a;
int main()
{
f();
cout<< a;
getch();
}

این هم ادامش !

#include <iostream.h>
void f()
{
cout<<"f() in Unit1.cpp" "\n";
}
int a = 123456;
با توربو سی 4.5

r00tkit
جمعه 14 آبان 1389, 18:55 عصر
من مشکلی ندیدم

sh4mid
یک شنبه 16 آبان 1389, 03:45 صبح
سلام

با توربو سی 4.5
compiler قحط بود :لبخند: باز دم Turbo C 3.0 گرم که کار کردن باهاش راحت تر هست
بریم سر وقت سوال
برای اینکه بتونی چندتا فایل رو با هم Compile کنی چندتا راه هست
اصولی ترین راه استفاده از Make هست ، یعنی میای یک Makefile درست می کنی ، تو makefile مشخص میکنی چه فایلهای obj باید از رو چه source هایی ساخته بشوند و چه فایل هایی از روی فایل های obj و اینکه وابستگیشون چطوره و ...
ساختار یک makefile اینجوری هست (تو TC 3.0)


# TCALC Sample Makefile

# Makefile to build TCALC, a Borland C++‎‎‎ demonstration program
# This version will create an overlaid version of the demonstration
# program. All of the code of the various source modules are overlaid
# except for TCALC.C, the main C module. The Overlaid Code Segments
# are linked in both the OBJ and LIB format. TCUTIL.OBJ and TCDISPLY.OBJ
# are put in a library ( TCALC.LIB ) while TCINPUT.OBJ, TCOMMAND.OBJ and
# TCPARSER are linked as separate object files.

.autodepend

.PRECIOUS: tcalc.lib # Prevents deletion of Library
# should addition of OBJ to Library
# fail.

!if !$d(MODEL) # Assume LARGE memory model if
MODEL = l # MODEL is not defined.
!endif

# Macro defining modules which are not overlaid
BASE_C_LIST = tcalc.c

# Macro defining modules which are overlaid
OVRL_C_LIST = tcinput.c \
tcommand.c \
tcparser.c

# Macro defining libraries which are not overlaid
BASE_LIB_LIST = overlay \
emu \
math$(MODEL) \
c$(MODEL)

# Macro defining libraries which are overlaid
OVRL_LIB_LIST = tcalc.lib

.c.obj: # Implicit rule regarding the
bcc -m$(MODEL) -c -Y -v {$< } # dependency of .OBJs on .Cs

# First Explicit Rule (Final Target) for TCALC.EXE
tcalc.exe: $(BASE_C_LIST:.c=.obj) $(OVRL_C_LIST:.c=.obj) $(OVRL_LIB_LIST)
tlink /v /L..\..\LIB @&&!
c0$(MODEL).obj $(BASE_C_LIST:.c=.obj) /o+ $(OVRL_C_LIST:.c=.obj) /o- # Objs
$* # Exe
$* # Map
/o+ $(OVRL_LIB_LIST) /o- $(BASE_LIB_LIST) # Libs
!

# Explicit Rules for TCALC.LIB
tcalc.lib:: tcutil.obj
tlib $< +-$**

tcalc.lib:: tcdisply.obj
tlib $< +-$**

و


# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
#
# This makefile was generated by the utility PRJ2MAK.EXE
#
# PRJ2MAK converts project files (filename.PRJ) into .MAK files.
#
# The .PRJ file for this example is in the EXAMPLES directory
# of the Container Class Library.
#
# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

.AUTODEPEND

# *Translator Definitions*
CC = bcc +DIRECTRY.CFG
TASM = TASM
TLIB = tlib
TLINK = tlink
LIBPATH = ..\..\LIB;..\LIB
INCLUDEPATH = ..\..\INCLUDE;..\INCLUDE


# *Implicit Rules*
.c.obj:
$(CC) -c {$< }

.cpp.obj:
$(CC) -c {$< }

# *List Macros*


EXE_dependencies = \
directry.obj \
filedata.obj \
testdir.obj \
..\lib\tclasss.lib

# *Explicit Rules*
directry.exe: directry.cfg $(EXE_dependencies)
$(TLINK) /v/x/c/P-/L$(LIBPATH) @&&|
c0s.obj+
directry.obj+
filedata.obj+
testdir.obj
directry
# no map file
..\lib\tclasss.lib+
graphics.lib+
emu.lib+
maths.lib+
cs.lib
|


# *Individual File Dependencies*
directry.obj: directry.cfg directry.cpp

filedata.obj: directry.cfg filedata.cpp

testdir.obj: directry.cfg testdir.cpp

# *Compiler Configuration File*
directry.cfg: directry.mak
copy &&|
-v
-vi
-w-ret
-w-nci
-w-inl
-w-par
-w-cpt
-w-dup
-w-pia
-w-ill
-w-sus
-w-ext
-w-ias
-w-ibc
-w-pre
-w-nst
-I$(INCLUDEPATH)
-L$(LIBPATH)
| directry.cfg

البته اگر چیزی هم نفهمیدی مهم نیست چون خودم هم نفهمیدم اینجا چی به چیه :قهقهه: :قهقهه:

روش دوم روش راحتتری هست ، شما یک Project از نوع easywin تعریف می کنی ، یک صفحه ای میاد که سه مدل فایل داره cpp، def و rc (این مال TC 4.5 هست)
ما با فایل rc کار نداریم(این همون resource ها هستند)
فایل های خودمون رو به Project اضافه می کنیم ، حالا فایل با پسوند def رو انتخاب کرده این ها رو توش مینویسیم


EXETYPE WINDOWS
CODE PRELOAD MOVEABLE DISCARDABLE
DATA PRELOAD MOVEABLE MULTIPLE
HEAPSIZE 1000
STACKSIZE 45000


به روزهای اولیه Windows Programming خوش آمدید :قهقهه: :قهقهه: :قهقهه:

یک گزینه ای هست به اسم Buildall میزنیش و کار تمومه ، یک صفحه windows البته از نوع 3.1 باز میشه و چیزایی توش نوشته(راستی مقدار 123456 برای int زیادی زیاده )

تو TC 3.0 هم میشه فایل project تعریف کرد ، دنگ فنگ بالا رو هم نداره

راحت ترین روش توی TC 3.0 هست ، فرض کن اسم فایل ها sample1.cpp و sample2.cpp باشه
اول از همه یه فایلی هست به اسم turboc.cfg اینو با notepad بازش کن توش دو تا خط نوشته مثل این
-IG:\TC\INCLUDE
-LG:\TC\LIB
بعد از I- و L- اسم اونجایی رو بنویس که پوشه TC هست (مثلا مال من تو درایو G بود در حالیکه پیش فرضش C هست)
خوبیش اینه که هر دفعه نمی خواهد تو command line مسیر Include و Library رو مشخص کنی(اگر مشخص نکنی بر اساس مقادیر این فایل عمل میکنه)

حالا راحت توی Command line بنویس
TCC -ms sample1.cpp sample2.cpp

یک روش هم اینه که بیای تک تک فایل ها رو با Tcc با گزینه c- اول تبدیل کنی به فایل obj بعد با Tlink اونا رو تبدیل کنی به فایل exe (و وقتی تو command line میای و Tlink رو اجرا می کنی تازه اول ماجراست :قهقهه: :قهقهه: :قهقهه:)

Gold_cpp
یک شنبه 16 آبان 1389, 07:34 صبح
سلام
مشکل این بود که نمی دونستم که توی TC هم(:کف:) میشه project درست کرد .
حل شد بدین صورت که وقتی که project تعریف میکنیم که شامل cpp، def و rc هستش .
def و rc رو delete میکنیم بعد تو همون project برنامه ها یی که میخوام compile کنیم رو add مکنیم .
و بعد هم پیدا کنید پرتقال فروش را !
sh4mid از اینکه وقت گذاشتید ممنونم .:لبخند: