使用VC时一些容易犯的错误

news2024/11/26 4:46:16

本文迁移自本人网易博客,写于2011年1月13日,使用VC时一些容易犯的错误 - lysygyy的日志 - 网易博客 (163.com)

1、在调用其他类中的函数时,需要在当前类中声明一个类对象,但是调用的时候,编译会出错。出现很多@符号,无法处理外部标识,这种错误我一连犯过好几次,其实是在复制函数定义的时候,在函数名前没有写类名。

2、error LNK2005: "class AdditionalClass additionalClass" (?additionalClass@@3VAdditionalClass@@A) already defined in StdAfx.obj

LINK : warning LNK4098: defaultlib "msvcrt.lib" conflicts with use of other libs; use /NODEFAULTLIB:library

Debug/Transverse.arx : fatal error LNK1169: one or more multiply defined symbols found

将项目设置-c++-Code Generation-Use runtime library,改为Multithreaded Dll,警告LNK4098没有了

终极解决办法:

在 Project/Setting/Link/General中的 Project Options: 加入 /FORCE:MULTIPLE即可。

终于没有错误了,但是依然有警告:

LINK : warning LNK4075: ignoring /INCREMENTAL due to /FORCE specification

TransverseCommands.obj : warning LNK4006: "class AdditionalClass additionalClass" (?additionalClass@@3VAdditionalClass@@A) already defined in StdAfx.obj; second definition ignored

TransverseCommands.obj : warning LNK4006: "class AdditionalClass additionalClass" (?additionalClass@@3VAdditionalClass@@A) already defined in StdAfx.obj; second definition ignored

Creating library Debug/Transverse.lib and object Debug/Transverse.exp

Debug/Transverse.arx : warning LNK4088: image being generated due to /FORCE option; image may not run

Link时出现:

LINK : warning LNK4075: 忽略”/EDITANDCONTINUE”(由于”/INCREMENTAL:NO”规范)

这个问题是因为在vc6中,工程使用的增量编译。

解决办法:

属性,链接器,常规,启动增量链接 选择 是(INCREMENTAL)

其实这个问题,还是自己编码的问题,默认的环境是没有问题的,根本不需要修改设置的。在VC++程序中默认有一个全局的变量theApp,看一下这个全局变量用法就知道该如何定义全局变量了,其实自己以前使用过的。只是到了今天才发现C++原来这么高深莫测,自己以为很简单的使用方法背后有那么复杂的理论基础。

定义全局变量的方法:在cpp文件中定义全局变量后(不能在头文件中定义,因为若多个文件都有包含这个头文件,会多次编译,导致出现重复定义的错误),在其他要使用该全局变量的类的头文件中使用extern来声明。如果看过C++经典面试题的话,应该就有印象了,当时我是死记硬背的,知道这个extern是用来避免重复定义的,到了今天才理解。

3、debug版本没有,release版本却有这个错误

LINK : warning LNK4089: all references to "AcGe15.dll" discarded by /OPT:REF

我将AcGe15.lib加入到项目设置的导入库中,再将stdafx.h中与acge库有关的头文件删除(只要程序不提示错误就行)后,警告清除了

4、在使用ObjectARX时,想使用MFC库中的函数和类(CString、AfxMessageBox),添加了类的头文件#include <afx.h>,却出现如下错误:

fatal error C1189: #error : WINDOWS.H already included. MFC apps must not #include <windows.h>

在vc中写代码会遇到windows api和mfc混合使用,比如查找一个目录是否存在,有人很喜欢用CFileFind(其实可以#include <io.h>用access判断)同时又include了windows.h这样如果windows.h在mfc的几个头文件前面就会报fatal error C1189: #error :?WINDOWS.H already included.MFC apps must not #include <windows.h>,解决方法把mfc的几个头文件移到最前面,注释掉windows.h。

这样之后CString是可以用了,但是AfxMessageBox仍然不可用.

error C2065: 'AfxMessageBox' : undeclared identifier

AfxMessageBox调用头文件#include <afxwin.h>,将其加入stdafx.h中报错:

nafxcw.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined in Transverse.obj

nafxcw.lib(dllmodul.obj) : warning LNK4006: _DllMain@12 already defined in Transverse.obj; second definition ignored

Creating library Release/Transverse.lib and object Release/Transverse.exp

LINK : warning LNK4098: defaultlib "mfc42.lib" conflicts with use of other libs; use /NODEFAULTLIB:library

LINK : warning LNK4098: defaultlib "mfcs42.lib" conflicts with use of other libs; use /NODEFAULTLIB:library

LINK : warning LNK4098: defaultlib "msvcrt.lib" conflicts with use of other libs; use /NODEFAULTLIB:library

../BIN15/Transverse.arx : fatal error LNK1169: one or more multiply defined symbols found

将 mfc42.lib加入项目设置导入库,并设置为User mfc in a shared dll后,出现如下错误:

mfcs42.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined in Transverse.obj

mfcs42.lib(dllmodul.obj) : warning LNK4006: _DllMain@12 already defined in Transverse.obj; second definition ignored

Creating library Release/Transverse.lib and object Release/Transverse.exp

../BIN15/Transverse.arx : fatal error LNK1169: one or more multiply defined symbols found

工程->设置->c/c++->预处理器 删除_USRDLL,错误都没有了

5、使用ObjectARX时,AcDbGroup类的对象,pGroup->append(objId),时,出现eHasMultipleReaders错误。

原因:在增加和删除实体之前,要先关闭对象。pObje->close();pGroup->append(objId);这样就OK了。

6、使用ObjectARX添加扩展数据时,这一行es = pObj->setXData(pRb);提示错误写入扩展数据错误:126,代码126是指eRegappIdNotFound。

写入扩展数据错误:52,52指eBadDxfSequence。

搞了半天,原来那个应用程序名没有注册,直接就往结果缓冲区链表中添加数据了,应该先注册acdbRegApp(szAppName);第无数次地尝到了抄袭代码带来的巨大悲痛啊!

7、AcDbTextStyleTable添加记录时,blockTable->append(textId, blockTableRecord);这一行会提示错误:eNotOpenForWrite,但此时,blockTable明明是Adesk::kForWrite的。

错误信息:内部错误:!U:\global\src\ObjectDbx\DB\IMP\src\dbobji.cpp@5619:eNotOpenForWrite。

也许是我装的ObjectARX2002的问题吧,我测试了N种情况,只要跟文本样式的AcObjectId有关就会提示这个错误。直接在AutoCAD2002中绘制文字,也没有办法加粗文字的。

应该是最初没有一行一行都跟踪返回一个值吧,最后经过老师指点,发现不是那一行的错误,只好一行一行找,最终找到错误在这一行pText->setTextStyle(textStyleId);前面有pText设置过了,这里应该是pText1,原来是写错了对象了。

8、在使用acedGetString时,如何实现:用户输入非法可重新输入,若按回车或Escape取消输入;

目前使用该函数时,用户输入一个字母后,光标会跑到这个字母的前面,导致输入顺序倒置,如何处理?

,”n请输入一个字符串:”,

提示字符串长度要是偶数,不包括’n’

9、使用AcDbPoint3dArray时,最后一个元素总是跑到第一个,数组形参最好都用引用,若用指针,地址可能会循环到最后一个。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/143649.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023年SQL大厂高频实战面试题(详细解析)

大家好&#xff0c;我是宁一。 已经连续四个周没有休息了&#xff0c;最近主业、副业都是忙碌的巅峰期&#xff0c;晚上11点下班回家&#xff0c;再写课写到凌晨两点。 连续一个多月连轴转&#xff0c;每天最大的愿望&#xff0c;就是睡足觉。 这一阶段终于忙完了~继续来更新SQ…

LongAdder源码【原创+图解+视频讲解】

目录 AtomicLong用法 源码分析 问题 解决 LongAdder用法 高并发下效率测试 原理 源码 add(long x) Striped64的longAccumulate 伪共享 总结 视频讲解&#xff1a; AtomicLong用法 public static void main(String[] args) {AtomicLong i new AtomicLong(0); ​S…

SQL UPDATE 语句

UPDATE 语句用于更新表中的记录。 SQL UPDATE 语句 UPDATE 语句用于更新表中已存在的记录。 SQL UPDATE 语法 UPDATE table_name SET column1 value1, column2 value2, ... WHERE condition; 参数说明&#xff1a; table_name&#xff1a;要修改的表名称。column1, colu…

C++:std::thread:线程用法

1&#xff1a;std::thread的基本用法 最简单的 std::thread用法如下&#xff0c;调用 thread将立即同时开始执行这个新建立的线程&#xff0c;新线程的任务执行完毕之后&#xff0c; main()的主线程也会继续执行。 #include<iostream> #include<thread> #include&l…

一致性hash算法和hash算法的区别和使用场景

1、hash算法使用场景 一般情况下hash算法主要用于&#xff1a;负载均衡&#xff08;nginx 请求转发&#xff0c;scg路由等&#xff09;&#xff0c;分布式缓存分区&#xff0c;数据库分库分表&#xff08;mycat&#xff0c;shardingSphere&#xff09;等。 2、hash算法大致实…

网络编程套接字——udp网络编程

目录 一、预备知识 1.端口 2.TCP协议和UDP协议 3.socket编程接口 ①socket 常见API ②sockaddr结构 二、网络编程 1.UDP网络程序 1.1服务器 ①打印 ②socket​编辑 ③bind ④recvfrom ​编辑 1.2客户端 ①sendto 1.3提升通信的花样性 ①将字符串返还 …

Individual Tree Segmentation Method Based on Mobile Backpack LiDAR Point Clouds

Abstract 单棵树 (IT) 分割对于森林管理、支持森林清查、生物量监测或树木竞争分析至关重要。光探测和测距 (LiDAR) 是这方面的一项突出技术&#xff0c;优于竞争技术。航空激光扫描 (ALS) 经常用于森林记录&#xff0c;在树顶表面显示良好的点密度。尽管使用多回波 ALS 可以收…

【虹科云展厅专题】虹科赋能汽车智能化云展厅——车载以太网/TSN专题

虹科2023年开年福利来了&#xff01; 聚焦前沿技术&#xff0c;【虹科赋能汽车智能化云展厅】正式上线&#xff0c;本次云展厅围绕“汽车以太网/TSN、汽车总线、智能网联、电子测试与验证、自动驾驶”等核心话题&#xff0c;为您带来如临展会现场般的讲演与介绍&#xff0c;更…

Unity入门基础语法

物体的坐标 transform.position 世界坐标 transform.localPosition 相对坐标 设置物体的坐标&#xff1a; this.transform.localPosition new Vector3(1.5f, 0, 2.0f); 帧更新 Update()&#xff0c;称为帧更新 此方法会被游戏引擎定时调用&#xff0c;已更新游戏的状态 …

基于Java+SpringBoot+vue+element实现物流管理系统

基于JavaSpringBootvueelement实现物流管理系统 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码联系…

SQL Studio:一款纯Web化SQL开发工具,关键是免安装还免费!

经常使用SQL工具的开发者对Navicat一定都不陌生。这款软件作为一款全球化的多数据库管理工具&#xff0c;这些年逐步得到全国各地SQLer&#xff08;SQL开发者&#xff09;的关注。 与其他很多外来的软件产品一样&#xff0c;由于价格原因&#xff0c;很多SQLer感觉不太适合适应…

聊聊微服务架构中的用户认证方案

传统的用户认证方案 我们直奔主题&#xff0c;什么是用户认证呢&#xff1f;对于大多数与用户相关的操作&#xff0c;软件系统首先要确认用户的身份&#xff0c;因此会提供一个用户登录功能。用户输入用户名、密码等信息&#xff0c;后台系统对其进行校验的操作就是用户认证。…

S7-1200与三菱FX5U系列PLC通过简单CPU通信功能实现以太网通信的具体方法

S7-1200与三菱FX5U系列PLC通过简单CPU通信功能实现以太网通信的具体方法 前提条件: 西门子S7-1200一侧需要在防护安全中选择连接机制,选择连接机制后在将这里面的“ 允许来自远程对象的PUT/GET通讯访问”这个选项勾选即可。 另外要注意,被访问的DB块要设置为非优化的块访问…

Go第 9 章:map

Go第 9 章&#xff1a;map 9.1 map 的基本介绍 map 是 key-value 数据结构&#xff0c;又称为字段或者关联数组。类似其它编程语言的集合&#xff0c; 在编程中是经常使用到 9.2 map 的声明 9.2.1基本语法 var map 变量名 map[keytype]valuetype 9.2.2map 声明的举例 m…

如果这都不是爱!谷歌承包广告牌喊话苹果;亚马逊裁员的业内分析;李玟VR演唱会明日上线;AMD发布会全程高能;GitHub今日热榜 | ShowMeAI资讯日报

&#x1f3a1; 『Google』再次买下大幅电子广告牌&#xff0c;喊话苹果推动 RCS 发展 一线消息&#xff0c;Google 在拉斯维加斯 Harmon Corner 投放了大型新年主题广告&#xff0c;喊话说服苹果采用 RCS 消息协议&#xff0c;不要在修复像素化的照片和视频上掉链子。视频显示…

YOLOv5-C3模块实现

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f366; 参考文章地址&#xff1a; 365天深度学习训练营-第P8周&#xff1a;YOLOv5-C3模块实现&#x1f356; 作者&#xff1a;K同学啊一、前期准备1.设置GPUimport torch from torch import nn i…

数据库,计算机网络、操作系统刷题笔记26

数据库&#xff0c;计算机网络、操作系统刷题笔记26 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法学生都得去找开发&#xff0c;测开 测开的话&#xff0c;你就得学数据库&#xff0c;sql&#xff0c;oracle…

消息队列如何保证消息幂等性消费

1 介绍 我们实际系统中有很多操作&#xff0c;不管你执行多少次&#xff0c;都应该产生一样的效果或返回一样的结果。 例如&#xff1a; 前端页面重复提交选中的数据&#xff0c;服务端只产生对应这个数据的一个反应结果&#xff0c;只保存一次数据。我们发起一笔付款请求&am…

裸露土堆智能识别检测系统 yolo

裸露土堆智能识别检测系统基于pythonyolo计算机视觉深度学习技术&#xff0c;对现场画面中土堆裸露情况进行实时分析检测&#xff0c;若发现画面中的土堆有超过40%部分裸露&#xff0c;则判定为裸露进行抓拍预警。我们选择当下YOLO最新的卷积神经网络YOLOv5来进行裸露土堆识别检…

商用密码安全性评估

商用密码应用安全性评估&#xff08;简称“密评”&#xff09;指在采用商用密码技术、产品和服务集成建设的网络和信息系统中&#xff0c;对其密码应用的合规性、正确性和有效性等进行评估。01办理依据 GM/T0054-2018《信息系统密码应用基本要求》 《信息系统密码测评要求&…