13 12
发新话题
打印

在TC下编写的小程序如何移植到Linux下?

在TC下编写的小程序如何移植到Linux下?

小弟是一菜鸟,在TC下编写了个C程序,请各位大虾指点一下如何将其在linux下编译通过并运行?
4 ~" x0 ?1 \+ x8 g6 I2 D' \主要可能是库函数的问题:
# X  `) x. l- ]' {8 n: r
; {: S6 U& m; G2 b! O. [) C程序GRAPDB.c:
6 @9 [$ A5 n# |% ]#include <math.h>
  g# v) W! t6 D" `#include <stdio.h> / a. w% }4 N! u6 T# g
#include <stdlib.h>
2 I3 r7 C* y" N6 ^$ a/ q#include <time.h>
& L0 r* _* }4 }6 U0 P#include <graphics.h> * j- `  {" l# m, K" P
main() ! S6 T- p( O3 ]* L3 N
{ int gdriver,gmode,posi;
$ w+ t1 Y" g5 I2 T  H! _8 c5 f) U9 X- [double Kdb=-4294967295;
7 e& c  A" r- N/ Q% X3 tdouble X,Y,G1,G2,C=1,a,R,K,S,A; , L2 Q3 x+ F( X  p5 P
int N=600,i;
0 K- V, s: ^( i0 J* m3 IK=pow(10.0,(Kdb/10)); - s' \  ?9 M. J5 {
a=1/(2*(K+1));
% H* X7 _- L+ i! P& Msrand((int)time(0)); 1 u/ ~5 @; ?( t
gdriver=DETECT; . C! K( \' M8 t! b9 Y
initgraph(&gdriver,&gmode,"c:\\turboc2\\bgi");
9 B: H/ G% S2 h* x( Y' U3 o  msetbkcolor(BLUE);
' c, Q, @" A+ N; v! Qcleardevice(); 2 d! @4 h# K8 k7 I6 h* E
setcolor(10);
! p. H+ x, f; D& Ufor(i=0;i<N;i++)
* p' q4 N5 f3 P% R+ R1 k* D) z{do
: O+ x0 H! u: N5 o7 I- B' N6 V{X=1-2.0*rand()/32767; , d! t, ~, h3 x. r9 C5 m9 p3 u9 E
Y=1-2.0*rand()/32767;
+ }6 k. K2 U6 \( [, LS=X*X+Y*Y;
1 C, ~, r  G+ ~} / d, \7 r4 c/ Q
while(S>=1);
2 Y; j# g$ d. d  c4 w0 @) [G1=X*sqrt(-2*C*C*log(S)/S);
7 T" C0 Z- X: p* {G2=Y*sqrt(-2*C*C*log(S)/S);
3 r2 @& a- Q! k7 P2 R( jR=sqrt(a*((G1+sqrt(2*K))*(G1+sqrt(2*K))+G2*G2));
: ^& E! L& I3 m: k) ]A=20*log10(R); - j, J4 Y  s0 S5 i
posi=240-8*A;
6 z2 \  q3 D% S' cline(i,240,i,posi); " P0 p9 @" N$ X& M
} . i! e# B, ?2 }. R0 N' q
getchar(); 6 }% u) {0 J. q/ u% m
closegraph();
! ^; w6 `' q3 |* S" t& K} 7 {4 X9 c; W5 p' o& \  j

1 H+ E! [& G: S) f在ubuntu下运行 gcc -o GRAPDB GRAPDB.c,错误如下: 8 X# Z2 i& `$ e. |8 ]
GRAPDB.c:5:22: 错误: graphics.h:没有该文件或目录   f; `3 c* s7 T8 u
GRAPDB.c: In function ‘int main()’:
! V0 e4 i' R) BGRAPDB.c:14: 错误: ‘DETECT’在此作用域中尚未声明
5 r$ m; u- l! m3 f* eGRAPDB.c:15: 错误: ‘initgraph’在此作用域中尚未声明
- `+ p: F0 l7 Y0 H7 @( l. tGRAPDB.c:16: 错误: ‘BLUE’在此作用域中尚未声明
7 V9 W& E7 [' N+ LGRAPDB.c:16: 错误: ‘setbkcolor’在此作用域中尚未声明 ; u4 n+ ^3 D- `8 p
GRAPDB.c:17: 错误: ‘cleardevice’在此作用域中尚未声明
: D5 O$ }; Z2 I7 q5 g5 l2 NGRAPDB.c:18: 错误: ‘setcolor’在此作用域中尚未声明
' f! {8 g$ |3 m7 zGRAPDB.c:31: 错误: ‘line’在此作用域中尚未声明 / v  K) x! W3 L- p: u% y
GRAPDB.c:34: 错误: ‘closegraph’在此作用域中尚未声明
7 J. T8 d. v7 y  s; E" ~" {. Q! E0 ~! j- j: @. g/ w% G3 s1 r  ~4 R
程序中有#include <graphics.h> Linux下好像没有这个库,请问该如何解决? 0 K( L3 H3 O% X' @# n, @9 f
需要换函数库吗?如何修改代码?
- y* P4 S( M7 Z' H' h6 Y跪谢各位大侠!!      

TOP

#include <graphics.h> 我记得是tc下windows的图形函数库,linux下根本就没有,把调用了头文件的语句删除就应该没问题了。
6 ~$ k: t6 ?5 |/ N/ P  A+ ^: l" b    linux下图形界面编程主要两个:GTK和QT      

TOP

图形还有一个和graphics类似的,不过我忘了叫什么了,      
看见阳光就微笑

TOP

回复 #2 mgqw 的帖子

把调用的头文件删除当然不行了,因为下面的画图语句是按照graphics.h库写的啊!      

TOP

引用:
原帖由 紫健龙魂 于 2008-5-31 23:16 发表 , P! \3 E* M2 e7 k$ f( @
把调用的头文件删除当然不行了,因为下面的画图语句是按照graphics.h库写的啊!
, c! _6 {6 N" [+ W# S" Y+ k
linux根本没有grahics.h库,是要把文件内调用了画图语句包括头文件全部删除!      

TOP

把文件内调用了画图语句包括头文件全部删除?全删除之后我还怎么画图啊!??      

TOP

用linux下的图形函数库:GTK/QT或者类似java/SDL等跨平台图形函数库画图      

TOP

linux --> cursor.h ?      
-----------------------------------------
http://www.darkspy.org/blog

自大的人把宗教当迷信,无知的人把迷信当宗教

TOP

maybe curse.h ?
& p- E, k+ J7 o" q! A" G
7 l6 C1 d9 G9 A3 a6 V. k( N  a" pi forgot...-_-      
-----------------------------------------
http://www.darkspy.org/blog

自大的人把宗教当迷信,无知的人把迷信当宗教

TOP

Linux下没有TC的graphics库,你可以使用SVGAlib或SDL库,并且更改初始化图形环境的语句以及显示图形的相关语句。      

TOP

 13 12
发新话题