当发生加载错误该怎样修改程序
我编写了一个计算.dwg文件中某一直线的程序,加载文件时提示发生如下错误,请问各位高手该如何修改,谢谢_appload acrxGetApiVersion 在 E:\exeice\test\Debug\test.arx (程序目录)中未找到
确定与 rxapi.lib 存在有效的应用程序连接并输出该符号。AcRxDynamicLinker
加载E:\exeice\test\Debug\test.arx失败。
D:\program files\AutoCAD 2002\acad.exe无法加载 test.arx 文件 源程序的代码如下:
#include <rxregsvc.h>
#include <aced.h>
#include <dbidmap.h>
#include <dbltrans.h>
#include <dbmain.h>
#include <dbsymtb.h>
#include <dbents.h>
#include <dbapserv.h>
#include <adslib.h>
#include <math.h>
//提取属性
void
LineEdit()
{
AcDbObjectId transId;
AcDbDatabase* pDb;
char *fname;
struct resbuf *rb;
//提示让用户选择一个图形文件
rb = acutNewRb(RTSTR);
int stat = acedGetFileD("Pick a drawing", NULL, "dwg", 0, rb);
//如果选择有误,则提示拥用户推出,命令
if ((stat != RTNORM) || (rb == NULL))
{
acutPrintf("\nYou must pick a drawing file.");
return;
}
//将获得的文件名转化为字符串
fname = (char*)acad_malloc(strlen(rb->resval.rstring) + 1);
strcpy(fname, rb->resval.rstring);
acutRelRb(rb);
// 打开前面选中的图形文件
pDb = new AcDbDatabase(Adesk::kFalse);
if (pDb->readDwgFile(fname) != Acad::eOk)
{
acutPrintf("\nSorry, that draing is probably already open.");
return;
}
acutPrintf("\nThe name of the draing is : %s",fname);
//获得这个图形文件数据库的块表
AcDbBlockTable *pBlockTable;
pDb->getSymbolTable(pBlockTable, AcDb::kForRead);
//获得模型空间块表记录
AcDbBlockTableRecord *pOtherMsBtr;
pBlockTable->getAt(ACDB_MODEL_SPACE, pOtherMsBtr, AcDb::kForRead);
pBlockTable->close();
// delete pDb;
// pDb = NULL;
// acad_free(fname);
ads_name en;
ads_point pt;
AcDbEntity *pEnt;
AcDbObjectId pEntId;
//提示选择判断中心线
acedEntSel("\nPlease Select acenter line which used to be tested.",en,pt);
//获得选中对象的ID
acdbGetObjectId(pEntId,en);
//打开对象
acdbOpenObject(pEnt,pEntId,AcDb::kForWrite);
//获取实体的长度
AcGePoint3dsPnt,ePnt;
double LineLength;
if (pEnt->isKindOf(AcDbLine::desc()))
{
sPnt=((AcDbLine *)pEnt)->startPoint();
ePnt=((AcDbLine *)pEnt)->endPoint();
LineLength=sqrt(((sPnt.x)-(ePnt.x))*((sPnt.x)-(ePnt.x))+((sPnt.y)-(ePnt.y))*((sPnt.y)-(ePnt.y)));
acutPrintf("\nThe length of the line is: %f",LineLength);
}
pOtherMsBtr->close();
pEnt->close();
}
void
initApp()
{
acedRegCmds->addCommand("test",
"CHECK",
"CHECK",
ACRX_CMD_MODAL,
LineEdit);
}
void unloadApp()
{
acedRegCmds->removeGroup("test");
}
extern "C" AcRx::AppRetCode
acrxEntryPoint(AcRx::AppMsgCode msg, void* appId)
{
switch (msg) {
case AcRx::kInitAppMsg:
acrxDynamicLinker->unlockApplication(appId);
acrxDynamicLinker->registerAppMDIAware(appId);
initApp();
break;
case AcRx::kUnloadAppMsg:
unloadApp();
break;
}
return AcRx::kRetOK;
} 你的程序要調用這人庫嗎.如不要就不要包進來 谢谢,我的问题解决了.
不过现在又出现了新问题,当调用上面的程序打开一个.dwg文件时,在AUTOCA工作区中并没有打开指定的文件,而且在AUTOCAD视图菜单中也没有列出指定的文件,虽然输出的文件名仍然是指定的文件名,请问各位前辈高手,该如何解决.
页:
[1]