找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 6017|回复: 12

[求助] ads——“MustSwitchTo_acedCommandC_or_acedCommandS”: 未声明的标识符

[复制链接]
发表于 2015-8-12 17:23:06 | 显示全部楼层 |阅读模式

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

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

×
出错代码如下:
ads_command(RTSTR,L"color",RTSTR,L"red",RTNONE);
ads_commmand 标红,查看声明头文件,在inc里的adsmigr.h有这两句话

#define ads_command MustSwitchTo_acedCommandC_or_acedCommandS - - !
#define ads_cmd MustSwitchTo_acedCmdC_or_acedCmdS

为什么仍会出现 error C2065: “MustSwitchTo_acedCommandC_or_acedCommandS”: 未声明的标识符
求助求助{:soso_e183:}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 264个

财富等级: 日进斗金

发表于 2015-8-12 22:01:46 来自手机 | 显示全部楼层
已经告诉你用什么了,没有其它
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 112个

财富等级: 日进斗金

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

使用道具 举报

已领礼包: 13个

财富等级: 恭喜发财

发表于 2016-9-14 13:21:04 | 显示全部楼层
本帖最后由 LoveArx 于 2016-9-14 13:23 编辑

楼主的帖子提示它很清楚了

  1. #define ads_command MustSwitchTo_acedCommandC_or_acedCommandS - - !
  2. #define ads_cmd MustSwitchTo_acedCmdC_or_acedCmdS
复制代码


提示它或者 用 acedCommandC 或者用acedCommandS, 所以用的时候根据需要


  1. #define ads_command acedCommandC
  2. #define ads_cmd acedCmdC


或者:

  1. #define ads_command acedCommandS
  2. #define ads_cmd acedCmdS




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

使用道具 举报

已领礼包: 112个

财富等级: 日进斗金

发表于 2016-9-14 13:46:17 | 显示全部楼层

我是在acrxEntryPoint.cpp文件的前面添加的#define ads_command acedCommandC
acrxEntryPoint.cpp(31): warning C4005: “ads_command”: 宏重定义
1>          c:\objectarx 2016\inc\adsmigr.h(28) : 参见“ads_command”的前一个定义
1>acrxEntryPoint.cpp(428): error C3861: “acedCommandC”: 找不到标识符
1>acrxEntryPoint.cpp(484): error C2065: “MustSwitchTo_acedCommandC_or_acedCommandS”: 未声明的标识符
1>acrxEntryPoint.cpp(488): error C2065: “MustSwitchTo_acedCommandC_or_acedCommandS”: 未声明的标识符
1>  GridDlg.cpp
1>GridDlg.cpp(2176): error C2065: “MustSwitchTo_acedCommandC_or_acedCommandS”: 未声明的标识符


代码在高飞鸟的多重编译R16~R19下可编译通过,目前使用VS2010 update4来编译CAD2015、2016的代码,头文件和库文件已引入(用的是ObjectARX2016),提示 宏重定义


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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2016-9-14 13:52:36 | 显示全部楼层

不同版本的ARX可能定义的名字不同,你要适合多个版本,加上预处理定义,
比如
#if (ADS < 19)
...
#elif (ADS < 20)
...
#endif

这样避免冲突,

至于提示你未定义,你去R20的ARX INC目录下,打开文件,看看里面ads_command是怎么定义的,回来修改下。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 112个

财富等级: 日进斗金

发表于 2016-9-14 22:06:40 | 显示全部楼层
adsmigr.h中定义如下:
#define        ads_command        MustSwitchTo_acedCommandC_or_acedCommandS - - !
#define        ads_cmd        MustSwitchTo_acedCmdC_or_acedCmdS

ObjectARX2016的readarx.chm中提示,
In the acedCommandS ‘Subroutine’ the first input token is fed to the Command: prompt, so should initiate a command, the last input token completes a command. A ‘token’ is a segment of a command. In a call like this:

acedCommand(RTSTR, _T("_Line"), RTSTR, _T("0,0"), RTSTR, _T("111,111"), , RTSTR, _T("") , RTNONE);

RTSTR, _T("_Line") is the first command token, and RTSTR, _T(””) is the last, which finishes the LINE command.

If your acedCommand call follows this contract, then use acedCommandS. Migrating the above code to acedCommandS is as simple as typing the extra ‘S’, like this:

acedCommandS(RTSTR, _T("Line"), RTSTR, _T("0,0"), RTSTR, _T("111,111"), RTSTR, _T(""), RTNONE);

However, if acedCommandS is not suitable if you want to pass in enough tokens to begin a command but not finish it. When the tokens run out, any command in progress is cancelled. Partially completed command side effects are not rolled back. For example, the following statement would fail to prompt the user for another endpoint, there would be no new line added to the database:

acedCommandS(RTSTR, _T("Line"), RTSTR, _T("0,0"), RTNONE);

Given that, acedCommandS usage is a lot simpler than acedCommandC as you will see, you save time by migrating your code to use acedCommandS wherever possible.

我直接将acedCommand替换为acedCommandS之后,依然提示未定义标识符 acedCommandS

若在acrxEntryPoint.cpp中定义
#define        ads_command        acedCommandS
#define        ads_cmd        acedCmdS
会提示重定义,
若在adsmigr.h中修改
#define        ads_command        MustSwitchTo_acedCommandC_or_acedCommandS - - !
#define        ads_cmd        MustSwitchTo_acedCmdC_or_acedCmdS
为下图所未,依然提示未定义标识符 acedCommandS
77.png

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

使用道具 举报

已领礼包: 112个

财富等级: 日进斗金

发表于 2016-9-14 22:09:21 | 显示全部楼层
之所以还在使用acedCommand主要是因为想定义一些简单的命令,如
        static void supportG(void)
        {
                // Add your code for command YTMsupport.G here
                acedCommand(RTSTR,_T("_.MOVE"),RTNONE);
        }
仅仅是将位于键盘右侧的M替换到左手的G键上,因此使用acedCommand应该是比较方便的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 13个

财富等级: 恭喜发财

发表于 2016-9-14 22:49:52 | 显示全部楼层

其实这种错误是最好解决的,因为编译器明确给出了,由于不知道你代码的结构和版本,不好直接说。

一个是上面N版说的,不同的版本在预处理器里面添加上符号定义下,比如 ADS=20,
然后你在你的代码里面需要的地方加上
#if (ADS=20)
.....
#endif

另外提示重定义的,你看下编译器里面的信息,指定了哪个H文件,我记得你还得去H文件里面修改下,把不是acedCommandS的前面那个删除。这个不用在你的代码里面添加,是在ADESK的H文件里面,你去找找。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 112个

财富等级: 日进斗金

发表于 2016-9-16 17:30:03 | 显示全部楼层
在StdAfx.h中添加
#if (ADS>19)
#include "acedCmdNF.h"
//#elif (ADS>20)
#endif

即可解决此问题

点评

我用你这方法还是没行,后来我直接用includeacedcmfnf.h 后测试 acedcommands(rtstr,“circle”,rtpoint,pt,rtreal,rad,rtnone)能编译成功,放到cad里却不能照我想的画出圆来。这是怎么回事呢  详情 回复 发表于 2018-5-6 21:46

评分

参与人数 1D豆 +5 收起 理由
newer + 5 有始有终奖!

查看全部评分

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

使用道具 举报

已领礼包: 28个

财富等级: 恭喜发财

发表于 2018-5-6 21:46:29 来自手机 | 显示全部楼层
革天明 发表于 2016-9-16 17:30
在StdAfx.h中添加
#if (ADS>19)
#include "acedCmdNF.h"

我用你这方法还是没行,后来我直接用includeacedcmfnf.h
后测试 acedcommands(rtstr,“circle”,rtpoint,pt,rtreal,rad,rtnone)能编译成功,放到cad里却不能照我想的画出圆来。这是怎么回事呢

点评

已经告诉你什么原因了,你改下H文件 #define ads_command acedCommandS #define ads_cmd acedCmdS 有两个地方好像。  详情 回复 发表于 2018-5-6 21:57
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2018-5-6 21:57:10 | 显示全部楼层
1121443108qaz 发表于 2018-5-6 21:46
我用你这方法还是没行,后来我直接用includeacedcmfnf.h
后测试 acedcommands(rtstr,“circle”,rtp ...

已经告诉你什么原因了,你改下H文件

#define ads_command acedCommandS
#define ads_cmd acedCmdS

有两个地方好像。

点评

哈哈,谢谢n版,不过原来是字符集的问题,我改完就好了。总之以前的acedcommand功能都是移到acedcommands这里来了,我就不用acedcommand了。  详情 回复 发表于 2018-5-6 22:01
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 28个

财富等级: 恭喜发财

发表于 2018-5-6 22:01:08 来自手机 | 显示全部楼层
newer 发表于 2018-5-6 21:57
已经告诉你什么原因了,你改下H文件

#define ads_command acedCommandS

哈哈,谢谢n版,不过原来是字符集的问题,我改完就好了。总之以前的acedcommand功能都是移到acedcommands这里来了,我就不用acedcommand了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 07:07 , Processed in 0.499329 second(s), 60 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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