乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 36|回复: 2

我的一个派生类

[复制链接]

7

主题

13

帖子

1

银币

初来乍到

Rank: 1

铜币
41
发表于 2002-11-12 15:43:00 | 显示全部楼层 |阅读模式
我自己做了一个派生类weltopMyclassObj:AcDbObject, 然后用它创建对象并加入到字典中
但编译时出现如下错误:
MyClassProCommands.obj : error LNK2001: unresolved external symbol "public: virtual enum Acad::ErrorStatus  __thiscall WeltopMyClassObj::dxfOutFields(class AcDbDxfFiler *)const " (?dxfOutFields@WeltopMyClassObj@@UBE?AW4ErrorStatus@Acad@@PAVAcDbDxfFi
ler@@@Z)
MyClassProCommands.obj : error LNK2001: unresolved external symbol "public: virtual enum Acad::ErrorStatus  __thiscall WeltopMyClassObj::dxfInFields(class AcDbDxfFiler *)" (?dxfInFields@WeltopMyClassObj@@UAE?AW4ErrorStatus@Acad@@PAVAcDbDxfFiler@@@Z)
MyClassProCommands.obj : error LNK2001: unresolved external symbol "public: virtual enum Acad::ErrorStatus  __thiscall WeltopMyClassObj::dwgOutFields(class AcDbDwgFiler *)const " (?dwgOutFields@WeltopMyClassObj@@UBE?AW4ErrorStatus@Acad@@PAVAcDbDwgFi
ler@@@Z)
MyClassProCommands.obj : error LNK2001: unresolved external symbol "public: virtual enum Acad::ErrorStatus  __thiscall WeltopMyClassObj::dwgInFields(class AcDbDwgFiler *)" (?dwgInFields@WeltopMyClassObj@@UAE?AW4ErrorStatus@Acad@@PAVAcDbDwgFiler@@@Z)
MyClassProCommands.obj : error LNK2001: unresolved external symbol "public: virtual class AcRxClass * __thiscall WeltopMyClassObj::isA(void)const " (?isA@WeltopMyClassObj@@UBEPAVAcRxClass@@XZ)
MyClassProCommands.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall WeltopMyClassObj::~WeltopMyClassObj(void)" (??1WeltopMyClassObj@@UAE@XZ)
MyClassProCommands.obj : error LNK2001: unresolved external symbol "public: enum Acad::ErrorStatus  __thiscall WeltopMyClassObj::mintVal(short &)" (?mintVal@WeltopMyClassObj@@QAE?AW4ErrorStatus@Acad@@AAF@Z)
Debug/WeltopMyClassPro.arx : fatal error LNK1120: 7 unresolved externals
Error executing link.exe.
请问如何解决?
回复

使用道具 举报

14

主题

230

帖子

5

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
286
发表于 2002-11-13 09:15:00 | 显示全部楼层
在类定义class weltopMyclassObj:public AcDbObject
中首先要做类声明,可调用宏ACRX_DECLARE_MEMBERS(weltopMyclassObj);
通过该宏的调用,将调用static void rxInit()函数进行类初始化,并声明类的运行时类辨别(即desc(),cast(),isA()函数)。
然后,实现自定义类时,要使用下列三个宏之一:
ACRX_NO_CONS_DEFINE_MEMBERS()  该宏用于抽象类和不能实例化的类。
ACRX_CONS_DEFINE_MEMBERS()  该宏用于瞬态类,可以实例化,但不能保存到文件中
ACRX_DXF_DEFINE_MEMBERS()  该宏用于能进行DWG和DXF文件读写操作的类。
其中最后一个宏最常用,也是容易出错的宏。
该宏在ObjectARX For R14和ObjectARX For 2000及2002中有所不同,你必须知道你所使用的ARX的版本。
首先,R14:宏的完整定义:
ACRX_DXF_DEFINE_MEMBERS( CLASS_NAME, PARENT_CLASS, PROXY_FLAGS, DXF_NAME, APP)
在2000和2002中该宏升级为:
ACRX_DXF_DEFINE_MEMBERS(CLASS_NAME, PARENT_CLASS, DWG_VERSION,   MAINTENANCE_VERSION, PROXY_FLAGS, DXF_NAME, APP)
其中,参数定义如下:
CLASS_NAME:自定义类名,此例为weltopMyclassObj
PARENT_NAME:派生父类名,此例为AcDbObject
PROXY_FLAGS:类对象代理标志,你若不使用代理,此参数为0
DXF_NAME:DXF文件名,可任意指定,据AUTODESK技术支持人员说要用大写字母,不过我写过一个程序用了大小写混和,好象没出问题
APP:应用程序名,注意:一个应用程序中有多个自定义类时,DXF_NAME和APP参数应该保持一致。
DWG_VERSION,   MAINTENANCE_VERSION:分别指类适用的ACAD最高和最低版本,在ARX 2000和2002中必须填写这两个参数,我不知道这两个参数具体如何使用,我在程序中分别指定为AcDb::kDHL_CURRENT和AcDb::kMReleaseCurrent
回复

使用道具 举报

7

主题

13

帖子

1

银币

初来乍到

Rank: 1

铜币
41
发表于 2002-11-14 09:16:00 | 显示全部楼层
非常感谢,我又仔细检查了一遍,少加了一个链接库
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2024-11-22 07:16 , Processed in 0.148779 second(s), 58 queries .

© 2020-2024 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表