C1189 Winver 0x501 fatal error C1189: #error: MFC does not support WINVER less than 0x0501.

ObjectARX 常见编译错误解决方式记录

方式一&方式二

ObjectARX 常见编译错误解决方式记录

注释掉后,vs会自动从WinSDKVer.h头文件获取
_WIN32_WINNT not defined. Defaulting to _WIN32_WINNT_MAXVER (see WinSDKVer.h)

C1189 RTCc fatal error C1189: #error: /RTCc rejects conformant code

ObjectARX 常见编译错误解决方式记录

方式一

增加预处理定义 _ALLOW_RTCc_IN_STL
ObjectARX 常见编译错误解决方式记录

方式二

define _ALLOW_RTCc_IN_STL
ObjectARX 常见编译错误解决方式记录

方式三

修改代码生成中的较小类型检查/RTCc 为否
ObjectARX 常见编译错误解决方式记录

C2220 警告被视为错误 error C2220: 警告被视为错误 - 没有生成“object”文件

ObjectARX 常见编译错误解决方式记录

方式一

修改警告的错误,保证不出现这个警告 ,例如这个int类型改为UINT类型

方式二

修改属性页,修改c/c++->常规->警告视为错误 改为否
ObjectARX 常见编译错误解决方式记录

方式三

禁用出现的这个警告编号 (disable:4838),这样就不会出现警告提示

ObjectARX 常见编译错误解决方式记录

ObjectARX 常见编译错误解决方式记录

解答 by gz_xl 缺少库

#if _MSC_VER >= 1920   // ObjectARXSDK 2021以上
#pragma comment(lib, "AcPal.lib")
#pragma comment(lib, "acgeoment.lib")
#endif

解答 by gz_xl 2017开始版本long变更int

//兼容性写法,高低版本都可以
extern Adesk::Int32 acdbSetDbmod(AcDbDatabase* pDb, Adesk::Int32 newVal);

解答

“模块计算机类型”一般指的是调用已经编译好的lib库文件的是x64, 
而 “目标计算机类型“X86” 是指的当前编译设置的编译平台是win32(x86),
当引用的lib文件和当前平台不匹配的时候,就会提示这个问题。
设置好正确的lib即可。在arx中一般是库目录的问题,确保库目录正确。

error C2664: “int acedSSLength(const int64_t [],Adesk::Int32 *)”: 无法将参数 2 从“long *”转换为“Adesk::Int32 *”

解答

//在高版本中获取选择集的数量参数类型从 long 变更为 Adesk::Int32,修改变量类型或者强制转换
Adesk::Int32 len;
acedSSLength(ss,&len);
或者是 
long len;
acedSSLength(ss,(Adesk::Int32*)&len);

相关文章:

  • 2022-12-23
  • 2021-10-30
  • 2021-10-11
  • 2022-03-01
  • 2022-12-23
  • 2021-07-08
  • 2021-10-30
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-09-17
  • 2021-06-26
  • 2021-05-30
  • 2022-12-23
相关资源
相似解决方案