找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1392|回复: 8

[ARX函数]:想学objectarx,菜鸟问题请大家帮忙

[复制链接]
发表于 2002-5-8 04:30:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我按教材写的hello程序,link出现一下错误,请问是怎么回事?
我用的是VC6。0  objectarx2002

Linking...
LINK : error LNK2001: unresolved external symbol _DllEntryPoint@12
HelloARX.obj : error LNK2001: unresolved external symbol _acutPrintf
Debug/Hello.arx : fatal error LNK1120: 2 unresolved externals
Error executing link.exe.

Hello.arx - 3 error(s), 0 warning(s)

我已经把lin lib目录加好了,环境里也加入了acge15.lib acdb15.lib acgiapi.lib acedapi.lib acrx15.lib acad.lib acedapi.lib rxapi.lib

Link标签项中,“Output"栏,“Base address"项输入“0x1c000000","Entry-point symbol"项输入“DllEntryPoint@12"
为什么DllEntryPoint@12回报错呢? 还有那个acutPrintf是什么?

是不是因为arx和VC的版本不对应啊?



源程序如下,我是照书输入的,应该没错啊……
#include <rxregsvc.h>
#include <aced.h>
#include <adslib.h>



void helloARX()
{
  ads_printf("HEllo,everbody");
}

void initApp()
{
        ads_printf("\nhelloARX Sample--initApp\n");
        acedRegCmds->addCommand("helloARX_COMMANDS","helloARX","helloARX",ACRX_CMD_MODAL,helloARX);
}

void unloadApp()
{
        ads_printf("\nhelloARX Sample--kUnloadAppMsg  \n");
        acedRegCmds->removeGroup("helloARX_COMMANDS");
}

extern "C" AcRx::AppRetCode
acrxEntryPoint(AcRx::AppMsgCode msg,void* pkt)
{
        switch(msg){
                case AcRx::kInitAppMsg:
                        initApp();
                        break;
                case AcRx::kUnloadAppMsg:
                        unloadApp();
                        break;
                case AcRx::kLoadDwgMsg:
                        ads_printf("\nhelloARX Sample--<kLoadDwgMsg %d>\n",msg);
                        break;
                default:
                        ads_printf("helloARX Sample--<unknown message %d>\n",msg);
        }
        return AcRx::kRetOK;
}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2002-5-8 20:02:42 | 显示全部楼层

Re: [ARX函数]:想学objectarx,菜鸟问题请大家帮忙

最初由 coolsun 发布
[B]我按教材写的hello程序,link出现一下错误,请问是怎么回事?
我用的是VC6。0  objectarx2002

Linking...
LINK : error LNK2001: unresolved external symbol _DllEntryPoint@12
HelloARX.obj : error LNK2001... [/B]

Link标签项中,“Output"栏,“Base address"项输入“0x1c000000","Entry-point symbol"项不要输入“DllEntryPoint@12"
acutPrintf是在CAD命令窗口输出信息,同C中printf.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-5-9 06:34:36 | 显示全部楼层
多谢了,第一个问题确实解决了。

那么第二个呢,那个功能我大概也知道,但是为什么会出错呢?
HelloARX.obj : error LNK2001: unresolved external symbol _acutPrintf
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-5-9 07:59:36 | 显示全部楼层
加上acutil15.lib,另外0x1c000000也可以不要
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-5-9 22:52:43 | 显示全部楼层
太感谢了。
终于link成功了…………但是在autocad2002里加载hello.arx出现以下错误:

Command: _appload acrxGetApiVersion 在 D:\tools\AutoCAD 2002\Hello.arx
中未找到。
确定与 rxapi.lib 存在有效的应用程序链接并输出该符号。AcRxDynamicLinker 加载
'D:\tools\AutoCAD 2002\Hello.arx' 失败
D:\TOOLS\AUTOCAD 2002\ACAD.EXE无法加载 Hello.arx 文件。

def文件如下:
DESCRIPTION ' hello sample'
library helloARX
exports acrxEntryPoint
                -SetacrxPtp
                acrxGetApiVersion


是哪里没设对吗?这些问题都太基本了吧,huhu,不好意思谁让我是菜鸟呢^_^


另外,请问哪里可以下到ObjectArx for AutoCAD2002的帮助文件。我只找到2000的,好像有些地方不太一样。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-5-9 22:54:29 | 显示全部楼层
另外0x1c000000和DllEntryPoint@12为什么可以不要那,那不是动态连接库的出口基址和入口点符号吗?

是因为版本更新就不需要了吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-5-10 08:15:57 | 显示全部楼层
1.确定一下def文件是否添加到工程里,如果没有,加入到工程里再试一下
2.下载一个完整版本的ObjectARX 2002 SDK,里面包含了chm格式的帮助文件。下载地址http://www.xdcad.net/down/show.php?id=3
3.0x1c000000和DllEntryPoint@12在R14的程序里面需要设置,在2000以后的版本不需要设置
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-5-13 10:49:24 | 显示全部楼层
我已经加入def文件了啊

DESCRIPTION ' hello sample'
library helloARX
exports acrxEntryPoint
                -SetacrxPtp
                acrxGetApiVersion
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-5-13 11:00:17 | 显示全部楼层
你确认这个文件加入到工程里了么,.def文件这样写


  1.   [FONT=courier new]
  2. LIBRARY      "helloARX"

  3. EXPORTS
  4.     acrxEntryPoint      PRIVATE
  5.     acrxGetApiVersion   PRIVATE
  6.   [/FONT]
复制代码
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-4-28 02:38 , Processed in 0.174171 second(s), 47 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表