为了编译第一个.arx,摸索了大半晚,站里能搜到的都是比较老的版本,希望本人的经验对刚入门的同学有所帮助。
以下是这个测试编译的源码,其实就是 ObjectARX:Developer's Guide的第一个例子。
#include<rxregsvc.h>
#include<acutads.h>
#include<rxdefs.h>
//#include"pch.h"
// Simple acrxEntryPoint code. Normally intialization and cleanup
// (such as registering and removing commands) should be done here.
//
extern "C" AcRx::AppRetCode
acrxEntryPoint (AcRx::AppMsgCode msg, void* appId) {
switch (msg) {
case AcRx::kInitAppMsg:
// Allow application to be unloaded
// Without this statement, AutoCAD will
// not allow the application to be unloaded
// except on AutoCAD exit.
//
acrxUnlockApplication (appId);
// Register application as MDI aware.
// Without this statement, AutoCAD will
// switch to SDI mode when loading the
// application.
//
acrxRegisterAppMDIAware (appId);
acutPrintf (L"\nExample Application Loaded");
break;
case AcRx::kUnloadAppMsg:
acutPrintf (L"\nExample Application Unloaded");
break;
}
return AcRx::kRetOK;
DEF文件:
LIBRARY "me_arxdemo_a.arx"
EXPORTS
acrxEntryPoint PRIVATE
acrxGetApiVersion PRIVATE
以下是设置的大致流程
- 1.创建项目时选“动态链接库 .dll”;
- 2.配置属性→高级→高级属性→目标文件扩展名 改为 “.arx”
- 3.配置属性→VC++目录→常规 “包含目录”添加 \inc 及 \inc-x64的目录;”库目录”添加 \lib-x64 的目录
- 4.(可选项)C/C++→预处理器 预处理器定义项 可只保留”_USRDLL;%(PreprocessorDefinitions)”,同时 C/C++→代码生成 运行库项 改为 “多线程DLL(/MD)”
- 5.C/C++→预编译头 “不使用预编译头”
- 6.链接器→常规 输出文件 后缀改为.arx
- 7.链接器→输入 附加依赖项 添加 \lib-x64 中需要的*.lib 同时指定模块定义文件(.def)的目录
不出意外,以上设置完成后即可完成动态库编译。
嗯,欢迎入坑~