|
-------------------Configuration: exc1 - Win32 Debug--------------------; {. i% j8 c4 e' k
Compiling...0 [2 h) b4 B' i/ a9 I* j4 ~
app.cpp
( f7 a6 i3 d. g" Z# d7 sLinking...
9 o# C$ ]# T3 q$ I$ y5 w Creating library DebUG/exc1.lib and object Debug/exc1.exp J% V6 J& a2 ^+ u7 s
LINK : warning LNK4098: defaultlib "MSVCRT" conflicts with use of other libs; use /NODEFAULTLIB:library
. ~/ i( H% }) o% t+ Cnafxcwd.lib(appcore.obj) : error LNK2001: unresolved external symbol ___argv e# ^. Z* ^3 G" q, X% A- q
nafxcwd.lib(appcore.obj) : error LNK2001: unresolved external symbol ___argc
1 \9 ^5 ^, a0 D' ]$ {, Hnafxcwd.lib(filelist.obj) : error LNK2001: unresolved external symbol __mbctype
. X F1 r/ A, ~& q+ f. i" \nafxcwd.lib(timecore.obj) : error LNK2001: unresolved external symbol __mbctype
) s0 L1 E5 Z# q5 f+ w& gnafxcwd.lib(apphelp.obj) : error LNK2001: unresolved external symbol __mbctype
# c W; ]& c2 g# vDebug/exc1.dll : fatal error LNK1120: 3 unresolved externals
6 e5 O+ t) t! Y A- F' P5 r2 i执行 link.exe 时出错.: g3 ~: p/ u6 q' L- ^: {
% Q# |$ T! n8 h% @# `6 S |. l
exc1.dll - 1 error(s), 0 warning(s)+ H' B2 l+ ~& z* L. L0 T7 X- e
' {7 i* V) q: p, G) i/ f
. j9 T' O. c2 s! k原例子程序:& Y+ z; r1 b) Y* a& ]3 D
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image002.jpgMain.h文件中放置了应用文件所需的头文件、宏定义、函数与结构声明等。用户应用文件只需包含文件Main.h,就能够包含需要的所有资源。Main.cpp文件中放置工程出口(User Exit)函数,并在该函数中注册一个应用。通常情况下,User Exit函数中不含有详细代码。
; z& v# k$ T" W- H7 A0 W Afile:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image004.jpg在Main.h中添加以下代码:#ifndef MAIN_H_INCLUDED#define MAIN_H_INCLUDED #include <uf.h>#include <uf_cfi.h>#include <uf_defs.h>#include <uf_exit.h>#include <uf_mb.h> #include <uf_styler.h>#include <uf_ui.h>#include <uf_assem.h>#include <uf_attr.h>#include <uf_layer.h>#include <uf_object_types.h>#include <uf_modl.h>#include <uf_disp.h>#include <uf_sket.h>#include <uf_facet.h>#include <uf_draw.h>#include <uf_part.h>#include <uf_obj.h>#include "Resource.h" #include "Application.h"//声明一个激活应用的列表结构static UF_MB_action_t act_table[] = { {"Test", [url=]NULL,[/url][微软用户1] Test, NULL }, {NULL, NULL, NULL[url=], 0[/url][微软用户2] }/* This is a NULL terminated list */};#endiffile:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image006.jpg在Main.cpp中添加如下代码:#include "stdafx.h"#include "Main.h"extern "C" DllExport void ufsta (char*param, int *retcode, int rlen){//注册菜单按钮 AFX_MANAGE_STATE(AfxgetStaticModuleState); //防止全局变量不同步而可能导致的编译出错 int error_code; if ((UF_initialize()) != 0) return; if ( (error_code = UF_MB_add _actions (act_table) )!= 0 )//注册UG应用 { charfail_message[133]=""; UF_get_fail_message(error_code, fail_message); AfxMessageBox(fail_message); } UF_terminate(); return;}file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image008.jpg在Application.h中添加如下代码,用来声明应用函数Test:UF_MB_cb_status_t Test(UF_MB_widget_t widget,UF_MB_data_t client_data, UF_MB_activated_button_p_t button);file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image010.jpg在Application.cpp中添加如下代码,实现应用函数Test:#include "stdafx.h"#include "Main.h" UF_MB_cb_status_t Test(UF_MB_widget_t widget,UF_MB_data_t client_data, UF_MB_activated_button_p_t button){/*Make sure User Function is available*/if(UF_initialize()!=0) return(UF_MB_CB_CONTINUE);uc1601("hello world",1);UF_terminate();return(UF_MB_CB_CONTINUE);}
7 H4 z' {' ]4 Y& Z: @8 x4 v6 n# Q3 \/ A' { H; U
1 D! F+ O% B" K6 s; D$ c6 [, ?) M
' [! z: ?7 k8 K- h. `1 t" u4 ?+ L, o& H# L1 E; ]" |- D% v$ d) X' b
* w& T9 O9 R5 d' n7 M; @7 W3 U
; e: F3 |$ b( Z& k7 L7 _
8 W/ f, z+ N6 q. D( J
; A* B! `: n$ j5 Y" _( o |
|