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


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

方式一&方式二

注释掉后,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

方式一

增加预处理定义 _ALLOW_RTCc_IN_STL

方式二

define _ALLOW_RTCc_IN_STL

方式三

修改代码生成中的较小类型检查/RTCc 为否

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

方式一

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

方式二

修改属性页,修改c/c++->常规->警告视为错误 改为否

方式三

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

LNK2001 无法解析的外部符号"void *_cdecl acHeapAlloc(void *,unsigned _int64)" (?acHeapAlloc@@YAPEAXPEAX_K@Z)

解答 by gzxl 缺少库

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

LNK111 模块计算机类型"x64"与目标计算机类型“X86"冲突 或 模块计算机类型"X86"与目标计算机类型“x64"冲突

解答

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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM