打开VS2019,新建项目,选择MFC动态链接库。选择使用MFC扩展DLL
附加包含目录
选择项目属性->C/C++常规->附加包含目录,配置如下(路径根据实际修改):
附加库目录
选择项目属性->C/C++常规->附加包含目录,配置如下(路径根据实际修改):
附加依赖项
选择项目属性->链接器->常规->附加库目录,配置如下(路径根据实际修改):
附加依赖项
选择项目属性->链接器->输入->附加依赖项,填入以下库
accore.lib
acad.lib
acui24.lib
adui24.lib
acpal.lib
ac1st24.lib
acdb24.lib
acge24.lib
acgiapi.lib
acISMobj24.lib
rxapi.lib
删掉dllmain中的默认代码,写入如下初始代码:
// dllmain.cpp : 定义 DLL 应用程序的入口点。
#include "pch.h"
#include <aced.h>
#include <rxregsvc.h>
void loginCloudDwgServer();
void initApp()
{
// 注册command
acedRegCmds->addCommand(L"CLOUD", L"LoginCloudDwg", L"LoginCloudDwg", ACRX_CMD_TRANSPARENT, loginCloudDwgServer);
}
void unloadApp() {
// 移除命令组
acedRegCmds->removeGroup(L"CLOUD");
}
void loginCloudDwgServer() {
// 功能入口,可以是界面程序或其他
AfxMessageBox(L"云图登录");
}
extern "C" AcRx::AppRetCode acrxEntryPoint(AcRx::AppMsgCode msg, void* pkt)
{
switch (msg)
{
case AcRx::kInitAppMsg://App插件初始化消息
{
acrxDynamicLinker->unlockApplication(pkt);
acrxRegisterAppMDIAware(pkt);
initApp();
break;
}
case AcRx::kQuitMsg:// 推出消息
case AcRx::kUnloadAppMsg://App插件卸载消息
{
unloadApp();
break;
}
default:
break;
}
return AcRx::kRetOK;
}
修改def文件
; cloudShareLoader.def: 声明 DLL 的模块参数。
LIBRARY "cloudShareLoader"
EXPORTS
acrxEntryPoint PRIVATE
编译发现一个警告:
解决:def文件中没有加后缀,默认dll,实际我们生成文件为arx,我们修改def的library加上后缀即可。
设置调试
在项目属性-> 调试->命令中加入cad的路径杰克。
运行,appload加载arx,输入LoginCloudDwg。