|
我学习了API参数化后,想利用GRIP直接建模,现在初步了解GRIP了,今天在做一个书上的“参数化直齿轮”的例子时。在自定义的目录下已经建好了startup 、application、grip 文件夹 生成直齿轮的GRIP程序已经编译连接好放到grip 文件夹里了,接着按书上的做法我用ug向导建立工程,把UIStyler建立的对话框C程序和头文件都拷贝到该工程的目录下,并添加到此工程中,然后再编写完下面程序时(完全按照书上的例子程序),无法生成DLL文件,有大约几十个错误 我看了一下 基本都出在 调用GRIP的语句出。大致分为这几种错误,3 o: H# Q' i" B. K, }
Compiling...
; [; y' N6 u; {! O1 `inner_gear.cpp
, k7 C+ \! F) B( i) m6 l4 dD:\inner_gear\inner_gear\inner_gear.cpp(464) : error C2065: 'write_para' : undeclared identifier/ m* \5 l# L; N) Z; G$ S
D:\inner_gear\inner_gear\inner_gear.cpp(481) : error C2065: 'data' : undeclared identifier! r- ~/ j; ~+ q5 N
D:\inner_gear\inner_gear\inner_gear.cpp(481) : error C2109: subscript requires array or pointer type5 v' @3 T+ o5 P" \
D:\inner_gear\inner_gear\inner_gear.cpp(481) : error C2228: left of '.value' must have class/struct/union type% h! l; w4 r' [6 R, W. D
D:\inner_gear\inner_gear\inner_gear.cpp(481) : error C2228: left of '.real' must have class/struct/union type, B& N1 d& Q' |/ p4 G
.
8 J4 s3 @4 ? ~; X4 R .
# Y8 P) F! P/ Y* p L .8 E: L1 ~7 a4 t- v% H9 l
D:\inner_gear\inner_gear\inner_gear.cpp(586) : error C2102: '&' requires l-value" \% b9 g' M" g
也许学习过GRIP和API联合参数化的朋友都做过这个参数化直齿轮的例子,下面是API中调用GRIP的一段程序,错误基本全出在这; o" A$ W+ r" [0 `/ x* g1 T# n
int i;
5 u+ q3 O \4 S8 k' y write_para(dialog_id); H# P& V# B6 E1 n! t C E0 j2 W
const char env[255]="UGII_USER_DIR";
4 Y& h. a* ^ D% U& U& J char *basedir=NULL;, e W5 Y y |
basedir=getenv(env);
' R4 |! d% P3 B+ |* c8 K/ r6 v
3 M* U( @3 G! j$ r& Q6 z char dir[100];
$ i( g" p, F1 C/ \# p strcpy(dir,basedir);% [1 a5 L# s1 U! g. ?- n
strcat(dir,"\\grip\\inner_gear.grx");/ U! r! L# h! S
! j M5 o" Q! L( L$ e+ d3 h
char *grip_exe=dir;
% u( t3 r, m1 U4 E7 U' A int status;; T) W" X$ ]' B3 [! c
int grip_arg_count=7;
# `1 }% j& Y% O! B UF_args_t grip_arg_list[7];
7 n4 n: C5 F6 I% u* { for(int j=0;j<7;j++)
( d g6 V. I7 A8 U! W- O0 Z, Y {
( x% E& f6 J; k. ^+ O( | if(fabs(data[j].value.real)==0.0)
; z5 x7 s3 ]7 E% }- E {3 }' m' ^" h6 n) C/ o& `( `9 S
uc1601("输入数据不能为零",1);
0 B% [7 r! k$ W2 u, a- ], C3 B return ( UF_UI_CB_CONTINUE_DIALOG );
. z3 H: A/ p+ _) h. J }
$ H2 p! s7 `* o }& P5 Z3 j k/ o& L$ \4 K) E% K
grip_arg_list[0].type=UF_TYPE_DOUBLE;! B0 b q) [6 X+ O5 ?$ {0 M4 }" E
grip_arg_list[0].length=0;
* R t# v' m5 U$ w# q; V. w$ b grip_arg_list[0].address=&data[0].value.real;
: ~9 [" @! N5 h3 J grip_arg_list[1].type=UF_TYPE_DOUBLE;
! c$ E3 a9 i7 B# o9 @( l grip_arg_list[1].length=0;
2 a& X5 W0 D3 |8 {- V9 f grip_arg_list[1].address=&data[1].value.real;- E% n& s7 K" o% h+ E
grip_arg_list[2].type=UF_TYPE_DOUBLE;
3 r6 a/ b6 C* z5 g3 |, t3 N grip_arg_list[2].length=0;
7 l/ ?" p" ^ |3 _& D& l# V double fdat=data[2].value.integer;/ ~& X/ W3 g! b3 f8 w6 \
grip_arg_list[2].address=&fdat;
! `/ k- t; V. S- X' l9 U% ^ 2 o3 |; x7 O2 b8 J5 A
for(i=3;i<7;i++)! S& F* u3 }+ `8 ^6 r
{
4 L) @( c& p9 ^ grip_arg_list.type=UF_TYPE_DOUBLE;5 `1 C: m0 Z) |/ C
grip_arg_list.length=0;! [. Z0 f3 m# }, d; ~
grip_arg_list.address=&data.value.real;# e* h5 ^( @6 x. f; M) D
}& l# E1 o- R) C- Z: D* o
/ ] g5 b C! f3 A' q status=UF_call_grip(grip_exe,grip_arg_count,grip_arg_list);' n, d: y7 X. j! Q, \2 n5 j8 Q
, v9 e* S, p/ \3 Q- }4 a
为什么出现这种情况 我把书上的程序编译一下 可以生成DLL文件 对比一下 是他在新建工程时,FileView里多一个“External Dependancies“ 的 文件,如下。请问是这里导致的问题吗?请高手一定帮帮!万分感谢!!!!; _5 Z5 ^! ~* a
7 J+ }5 P: u# F8 i( B. d
! P, c- l2 F- e x+ E$ J9 G/ K |
|