




已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
-精选财经经济类资料- -最新财经经济资料-感谢阅读- 1 编程经验交流 1. 当性能遇到问题时,如果能在应 用层进行计算和处理,那就把它从数据 库层拿出来。排 序和分组就是典型的例子。在应 用层做性能提升总是要比在数据库层容 易的多。就像对于 mysql,sqlite 更容易 掌控。 2. 关于并行计算,如果能避免就 尽量避免。如果无法避免,记住,能力 越大,责任越大。 如果有可能,尽量避免直接对线 程操作。尽可能在更高的抽象层上操作。 例如,在 ios 中,gcd,分发和队列操作 是你的好朋友。人类的大脑没有被设计 成用来分析那些无穷临时状态这是 -精选财经经济类资料- -最新财经经济资料-感谢阅读- 2 我的惨痛教训所得。 3. 尽可能简化状态,尽可能局部 本地化,适用至上。 4. 短小可组合的方法是你的好朋 友。 5. 代码注释是危险的,因为它们 很容易更新不及时或给人误导,但这不 能成为不写注释的 理由。不要注释鸡毛蒜皮的事情, 但如果需要,在某些特殊地方,战略性 的长篇注释是需要的。你的记忆会背叛 你,也许会在明天早上,也许会在一杯 咖啡后。 6. 如果你认为一个用例场景也许 “不会有问题吧 ”,它也许就是一个月后 让你在发布的产品 中遭受惨痛失败的地方。做一个 怀疑主义者,测试,验证。 7. 有疑问时,和团队中所有相关 人交流。 8. 做正确的事情你通常会知 道这指的是什么。 -精选财经经济类资料- -最新财经经济资料-感谢阅读- 3 9. 你的用户并不傻,他们只是没 有耐心理解你的捷径。 10. 如果一个开发人员没有被安 排长期的维护你们开发的系统,对他保 持警惕。80%的血、 汗、泪水都是在软件发布后的时 间里流的那时你会变成一个厌世者, 但也是更聪明的“ 行家” 。 11. 任务清单是你的好朋友。 12. 主动让你的工作更有乐趣, 有时这需要你付出努力。 13. 悄无声息的崩溃,我仍然会 为此从噩梦中惊醒。监控,日志,警报。 清楚各种的假警报 和不可避免的感觉钝化。保持你 的系统对故障的敏感和及时警报。 14. 复杂是大敌。 plc 编程经验详谈 2014-3-17 13:31:00 - - plc 程序调试步骤 -精选财经经济类资料- -最新财经经济资料-感谢阅读- 4 人的脑力是有限的,并且记事情也 有时间性。过了 n 天就会忘记每次修改 的原因,为什么要加这条指令,为什么要 删除这个网络,让自己以后看自己以前 编写的程序时都会很困惑。做到以下步 骤,对所有程序理解与修改会有很大帮 助的。 1、 把原有程序另存一个, 在另 存的程序上作修改。文件命名一个主要 的程序名称,标注第几次修改,并加上 修改的日期,最好是在文件名外加上简 要的修改标题。例如: 捆扎程序 5, 这里就不多说了。如果时间很长,为了 省钱,就要考虑在当地租房子了,尤其 是出发的是一个小组,而不是一个人的 时候。衣食住行,这些问题与普通的旅 行是一样的,虽然这些问题对你完成任 务的影响力并不亚于你的专业水平。想 象一下,你到了现场,因为食物 中毒导致一个星期拉痢疾的情况会对工 作造成什么样的影响,就知道该准备那 些东西了。通常,有经验的自动化公司 -精选财经经济类资料- -最新财经经济资料-感谢阅读- 5 的行政部门会为工程师考虑好这些情况, 但是,作为工程师自己一定要进行确认, 看看是否所有的事情都已经安排好了。 安顿好了衣食住行的后,要准备 自己的工具。作为 plc 的现场调试工程 师,并不需要很多的调试工具。但是, 一个螺丝刀、一台万用表,还是必备的。 另外,如果要与现场的仪表传感器进行 系统联调的时候,还要有一台信号发生 器来模拟现场仪表的信号,以确定当发 生问题时,现场的信号是完好的。还有, 一台结实的手提电脑,是你编程和调试 的必需的工具。虽然这些工具你可以要 求用户准备好,但是,作为一个职业的 plc 工程师,如果连这几样工具都没有, 会被用户怀疑你的职业水平的。其它的 一些仪器仪表,如果需要的话,你可以 向公司或者客户提出来,让他们提前准 备,比如,示波器、稳压电源等等。毕 竟这些不那么通用的仪器,通常是不可 能随身携带或备用的。 有一些常被忽视的小东西,你准 -精选财经经济类资料- -最新财经经济资料-感谢阅读- 6 备了之后一定有用的。如,电气胶带、 热缩套管、打火机,束线带、还有,如 果现场接线已经完成了,要准备好一些 与信号线相同的电缆,和一些固定基座 的螺丝。你可能怀疑要这些做什么用, 相信我,带上这些,虽然有些只值几分 钱,但到了现场后,可能会节约你一天 甚至几天的时间,尤其是你去的地方是 在一个偏远的山区的时候。虽然在发货 的时候厂家都有螺丝钉,但是到了现场 什么都有可能发生,如果螺丝钉不够, 会引起许多问题。 除了以上的东西,就是这次调试 所要带的备品备件了。虽然现场的货物 清单可能会已经考虑了备品备件的问题, 但为了应付万一的情况,有些备件你最 好还是自己要随身携带。首先是 plc 的 基板、电源、cpu 模块,因为这些是一 台 plc 能够工作的基础,如果现场只有 一套系统,那么这些模块就只有一个, 假如没有备分的话,一旦出现故障,你 的所有的工作都必须停下来。因此最好 -精选财经经济类资料- -最新财经经济资料-感谢阅读- 7 带上一套。 其它的 i/o 模块和通讯模块,如 果现场只有一个的,你都要考虑在多带 一个。对于那些现场已经有两块以上的 模块,你就不用考虑自己带了。 二、设计交底工作 如果系统设计不是你自己做的, 那么在出发前,就要与系统的设计人员 进行充分的沟通,对于不清楚和不明白 的地方,一定要弄清楚,确保自己清晰 地理解了要完成的工作目标,和设计者 的意图。不要轻易否定设计者的方案, 也不要轻易地说别人那里设计得不行。 但是,因为你是从事现场的工程 师,因此,也不必过于迷信设计者。你 可以提出自己的建议。比如,plc 的机 架和 cpu 模块和 i/o 模块的搭配原则, 可能有时候,设计师不知道你所用的 plc 的机架有 4 槽、6 槽和 8 槽,甚至 12 槽的,因此,也许全部都选了 8 槽的, 而导致了几个槽的空缺,你可以建议它 修改为 4 槽或 6 槽的。 -精选财经经济类资料- -最新财经经济资料-感谢阅读- 8 方案设计中,最容易出问题的地 方是通讯,现场调试最麻烦的地方也是 通讯,所以对于通讯的部分,你必须清 晰了解系统的框架结构,并且对需要进 行通讯的东西在出发前就要全部进行一 遍调试,而且要确认其中的所有需要通 讯的模块是可以通讯的。比如,操作台 电脑、触摸屏、plc、变频器、其它的 plc、一些智能仪表和仪器,如果这些东 西需要通讯的话,你必须要确认它们相 互之间是可以通讯的,如果你不确认的 话,就要与厂家联络,并亲自再试一次。 如果 plc 的节点数较多,要考虑距离和 厂家 cpu 的限制。 如果系统较大,远程单元、本地 机架数量、每个机架的模块数量的限制, 并非出于系统功能和技术上的限制,而 是由于使用规范性的限制。在系统硬件 组态时,要考虑这些模块的搭配作用。 对于电源模块的配置,一个资深的 工程师应该能够做出比较合理的搭配。 例如,电源模块通常有 5a 和 10a 的分 -精选财经经济类资料- -最新财经经济资料-感谢阅读- 9 别,如果模块较少,可以选用功率小的 电源模块,如果模块较多,则应该选用 大功率的电源模块。而一般,如果现场 仪表需要 plc 也供应 24v 直流电源而不 是采用外部电源供电的情景,通常 cpu 所在的机架上选用大功率的电源比较合 理。 此外,在 i/o 模块的安装时,根 据不同的系统,通常同型号的模块放置 在一起。但是,如果对于输出模块与输 入模块形成回路的,则可以将一个回路 的参量所涉及的模块放置在一个机架上 比较合理。有的设计师在设计的时候不 会考虑这一点,你可以调整过来。 在选型的时候,因为各种 plc 都 有大型、中型、小型的分别,这些分别 主要是由 cpu 模块的性能不同造成的。 在实际上,并非一定大型的功能就是合 适的。除了价格方面的考量之外,主要 是,如果控制点数不多,小型的 cpu 模 块完全可以胜任,则小型的 cpu 反而比 大型的 cpu 模块工作还要可靠一些。因 -精选财经经济类资料- -最新财经经济资料-感谢阅读- 10 为,小型的 cpu 所涉及的资源少,而大 型 cpu 的资源多,在程序执行中,为处 理那些程序不需用到的资源时,也要分 配时间去处理,这样不仅造成资源的浪 费,可能在程序处理上不及小型 cpu 可 以更单纯和稳定地工作。 在设计交底的过程中要指出的是, 对于设计中的任何变更,你只能提建议, 而不是擅自做修改。因为,你的职责是 按照设计施工,而不是设计,因此,对 于任何你发现的不合理的东西,你可以 提出意见,但必须要等到设计变更确认 书下到你手里后,你才能按照变更后的 设计工作,尽管这个变更可能是你的意 见。还有,即使最初的设计也是你做的, 你在变更后,也要通知客户,并取得客 户的书面同意。 三、装机步骤 到了现场后,进行系统安装前, 需要考虑安装环境是否满足 plc 的使用 环境要求,这一点可以参考各类产品的 使用手册。但无论什么 plc,不都能装 -精选财经经济类资料- -最新财经经济资料-感谢阅读- 11 设在下列场所:含有腐蚀性气体之场所, 阳光直接照射到的地方,温度上下值在 短时间内变化急遽的地方,油、水、化 学物质容易侵入的地方,有大量灰尘的 地方,振动大且会造成安装件移位的地 方。 如果必须要在上面的环境使用, 则要为 plc 制作合适的控制箱,采用规 范和必要的防护措施。如果需要在野外 极低温度下使用,可以使用有加热功能 的控制箱。如何做这些防护箱或控制箱, 各制造商和和资格的系统集成商将会为 客户提供相应的供应和设计。 在使用控制箱时,在控制箱内 openplc 安装的位置要注意如下事项: 控制箱内空气流通是否顺畅,变压器、 马达控制器、变频器等是否与 plc 保持 适当距离,动力线与信号控制线是否分 离配置,组件装设之位置是否利于日后 之检修,是否需预留空间,供日后系统 扩充使用。 除了上述注意事项之外,还有其 -精选财经经济类资料- -最新财经经济资料-感谢阅读- 12 它注意事项要留意。 首先比较重要的是静电的隔离。 静电是无形的杀手,但可能因为不会对 人造成生命危险,所以许多人常常忽视 它。在中国的北方、干燥的场所,人体 身上的静电都是造成静电损坏电子组件 的因素。虽然你被静电打到的话,只不 过是轻微的酥麻,但这对 plc 和其它任 何电子器件就足以致命了。 要避免静电的冲击有下列三种方 式:在进行维修或更换组件时,请先碰 触接地的金属,以去除身上的静电;不 要碰触电路板上的接头或是 ic 接脚;电 子组件不使用时,请用有隔离静电的包 装物,将组件放置在里面。想象 plc 里 的元器件是一个娇嫩的婴儿,而那些静 电会导致这个婴儿死亡,你就会更容易 以正确的态度对待这个问题了。 基座安装时,在决定控制箱内各 种控制组件及线槽位置后,要依照图纸 所示尺寸,标定孔位,钻孔后将固定螺 丝旋紧到基座牢固为止。在装上电源供 -精选财经经济类资料- -最新财经经济资料-感谢阅读- 13 应模块前,必须同时注意电源线上的接 地端有无与金属机壳连结,若无则须接 上。接地不好的话,会导致一系列的问 题,静电、浪涌、外干扰,等等。由于 不接地,往往 plc 也能够工作,因此, 不少经验不足的工程师就误以为接地不 那么重要了。这就像登山的时候,没有 系上保护缆绳一样,虽然你正常前进的 时候,保护缆绳没有任何作用,但一旦 你失足的时候,没有那根绳子,你的生 命就完结了。plc 的接地,就相当于给 plc 系上保护缆绳。 在 i/o 模块安装时,须注意如下 事项:i/o 模块插入机架上的槽位前, 要先确认模块是否为自己所预先设计的 模块;i/o 模块在插入机架上的导槽时, 务必插到底,以确保各接触点是紧密结 合的;模块固定螺丝务必锁紧;接线端 子排插入后,其上下螺丝必须旋紧。由 于现场的变压器、电机等影响,多少会 有振动,如果这些螺丝钉松动了,会导 致模块从机架中松开 -精选财经经济类资料- -最新财经经济资料-感谢阅读- 14 整个 verilog 中是以 module 为编 写基本单元的,module 不宜过大,目标 是实现一些基本功能即可,module 的层 次不宜太深,一般 35 层即可,给 module 划分层次原则:实现最基本功能 的为底层 module,然后中层是调用这些 基本 module,实现大的功能,最高层是 系统级模块,统筹各大块之间端口连接, 时序关系等。 在 module 内部编写中,最基本 块是 initial,always,以及 assign 块, 其他语句都要包含在这些块里面。这其 中,initial 块是不可综合语句,可以用 来编写 testbench,这里面的内容在程序 运行时只执行一次;assign 语句是在不 用寄存器的情况下直接编写组合逻辑; always 块是最常用的块,其语法格式是 always ;其中括号里称为敏感列表, 即对于组合逻辑而言,必须是所实现逻 辑的所有输入变量,意思是当组合逻辑 的每一个变量发生变化,结果立刻发生 变化。对于时序逻辑,常为 -精选财经经济类资料- -最新财经经济资料-感谢阅读- 15 always,指在时钟上升沿/下降沿 到来时,输出才根据那一时刻的输入来 决定输出结果。 编程思想: 这一部分是我的心得体会,一般 讲 verilog 的书肯定不会讲这个,因为 这部分感觉的东西比较多,完全靠理解 应用,没什么固定模式,呵呵,玄了点。 不废话了,开始切入正题。verilog 归根 到底还是编程,同时它是对电路的编程, 所以就可以利用这两个特点,充分利用 高级语言编程的思想和数字电路的知识, 就会很大程度上帮助你。首先牢记,编 写 verilog 依据的是时间轴,根据时间 顺序确定各种信号何时进入你的电路, 可以在编写时先把几个主流信号用 always 写出来,这些信号就是你的基准, 其他控制信号根据所处的位置在介入这 些主流信号,分别用 always 模块写入。这样,这种时间轴顺 序跟 c 的编程思想就一致,在编写这种 顺序性信号时,带着 c 的思想,基本就 -精选财经经济类资料- -最新财经经济资料-感谢阅读- 16 容易的多。同时,verilog 有个很重要的 电路特点,就是在每一时刻,同时会有 多个电路有信号,这样就必须从传统的 顺序语言中跳出来,然后进入数字电路 的思想,即你的编程要时刻跟实际电路 模型联系到一起,比如 a 关于复用: 复用对于硬件设计来说,尤为重 要,在实现功能的前提下,电路比的就 是主频和资源,而资源的减少思路就是 复用。比如多次调用一个子函数 a,如 果直接写,在结构上就是这个子函数电 路块 a 的复制,电路完成后就会看到你 调用了几次 a 函数,你的结构中就有几 个一模一样的 a 电路,当你的 a 电路本 身资源很大,而且你调用的次数很多时, 就很少有 fpga 能装的下了。这当然跟我 们的思想不符,我们只是想让整个电路 中只有一块电路 a,只不过把 a 电路在 不同时刻用了几次而已,这时就要用到 电路复用的思想。电路复用并不神秘, 简单来讲,就是把控制端放在 a 电路两 -精选财经经济类资料- -最新财经经济资料-感谢阅读- 17 边,用计数器之类的东西,控制在时间 轴的不同时刻把值写入 a 和从 a 输出端 读取值。补充一点,对于电路的同步, 计数器是一个很好的东西,因为本身计 数器资源并不很大,用它来对于相差多 个周期的信号进行同步,非常实用。但 是,当信号相差的时间过于大,计数器 的计数规模 就变的不可接受,这时就要用到 状态机划分状态的方法进行同步了。有 了同步,复用就变得简单的多。 关于 task: 这是前段时间论坛里讨论比较热 的东西。语法上说,task 是比 always 低 个等级,即 task 必须在 always 里面调 用,task 本身可以调用 task,但不能调 用 module。task 有什么用呢,个人觉得, 用 task 来封装大的逻辑语句不错,使代 码显得简单明了,这个对于 testbench 尤 为有用,但在实际电路中用处不大,因 为顺序调用 task 对于电路来说就是电路 块的复制,顺序多次调用就是多次复制 -精选财经经济类资料- -最新财经经济资料-感谢阅读- 18 电路,资源会成倍增加,不能达到电路 复用的目的,同时用 task 封装的纯逻辑 代码会使得电路的周期变大,主频降低, 不利于为了提高主频而采用的大逻辑切 分的方法! vc+编程经验总结 vc+如何实现远程调试 *假设调试机 ip 82 远 程机 ip 61 *远程机为调试机分配权限,使 调试机可以使用远程桌面登陆到远程机 器上。 *调试机上安装 visual studio .net 2014 共享调试机上的 visual studio 上 的远程调试目录 c:program filesmicrosoft visual studio .net 2014common7packagesdebugger *远程机将上面的共享目录考贝 到本地,比如:d:debugger *调试机共享要调试的程序所在 -精选财经经济类资料- -最新财经经济资料-感谢阅读- 19 目录,比如: d:importantcvsrootdv-to- dvdbindebug *远程机将调试机上的目录影射 为本地目录。比如:z: *远程机上以命令行形式执行 d:debuggermsvcmon.exe tcpip anyuser *调试机启动 vc. 打开要调试的 工程。比如 dvtodvd. 选择菜单 project- properties 选 debuging-remote setting connection :remote via tcp/ip remote machine: 61 remote command: z:dvtodvd.exe *debug-start *就可以调试了。 1.如何在 release 状态下进行调试 projectsettingprojectsetting 对话框,选择 release 状态。c/c+标签 中的 category 选 general,optimizations 选 disable,debut info 选 program database。在 link 标签中选中 generate debug info 复选框。 -精选财经经济类资料- -最新财经经济资料-感谢阅读- 20 注:只是一个介乎 debug 和 release 的中间状态,所有的 assert、 verify 都不起作用,函数调用方 式已经是真正的调用,而不查表,但是 这种状态下 quickwatch、调用队列跟踪 功能仍然有效,和 debug 版一样。 2. release 和 debug 有什么不同 release 版称为发行版,debug 版 称为调试版。 debug 中可以单步执行、跟踪等 功能,但生成的可执行文件比较大,代 码运行速度较慢。release 版运行速度较 快,可执行文件较小,但在其编译条件 下无法执行调试功能。 release 的 exe 文件链接的是标准的 mfc dll。这些 dll 在安装 windows 的时候,已经配置,所 以这些程序能够在没有安装 visual c+ 6.0 的机器上运行。而 debug 版本的 exe 链 接了调试版本的 mfc dll 文件,在没有 安装 visual c+6.0 的机器上不能运行, 因为缺相应的 dll,除非选择 use static dll when link。 -精选财经经济类资料- -最新财经经济资料-感谢阅读- 21 3. assert 和 verify 有什么区别 assert 里面的内容在 release 版本 中不编译,verify 里面的内容仍然翻译, 但不再判断真假。所以后者更安全一点。 例如 assert)。 一旦到了 release 版本中,这一行 就忽略了,file 根本就不 open 了,而且 没有任何出错的信息。如果用 verify 就 不会有这个问题。 4.workspace 和 project 之间是什 么样的关系 每个 workspace 可以包括几个 project,但只有一个处于 active 状态, 各个 project 之间可以有依赖关系,在 project 的 setting中可以设定,比如那 个 active 状态的 project 可以依赖于其他 的提供其函数调用的静态库。 5. 如何在非 mfc 程序中使用 classwizard 在工程目录下新建一个空的.rc 文 件,然后加入到工程中就可以了。 -精选财经经济类资料- -最新财经经济资料-感谢阅读- 22 6.如何设置断点 按 f9 在当前光标处增加一个断 点和取消一个断点。 另外,在编辑状态下,按 ctrl+b 组合键,弹出断点设置对话框。然后单 击按钮弹出设置断点条件的对话框进行 设置。 7.在编辑状态下发现成员变量或 函数不能显示提示是如何打开显示功能 这似乎是目前这个 visual c+ 6.0 版本的一个 bug,可按如下步骤使其正 常,如再出现,可如法炮制: 关闭 project 删除“ 工程名.ncb”文件 重新打开工程 8.如何将一个通过 classwizard 生 成的类彻底删除 首先在工作区的 fileview 中选中 该类的.h 和.cpp 文件,按 delete 删除, 然后在文件管理器中将这两个文件删除, 再运行 classwizard,这时出现是否移走 该类的提示,选择 remove 就可以了。 -精选财经经济类资料- -最新财经经济资料-感谢阅读- 23 9. 如何将在 workspace 中消失的 类找出来 打开该类对应的头文件,然后将 其类名随便改一下,这个时候工作区就 会出现新的类,再将这个类改回原来的 名字就可以了。 10. 如何清除所有的断点 菜单,打开“breakpoints”对话 框,单击按钮即可。快捷键是“ctrl + shift + f8”。 11. 如何再 classwizard 中选择未 列出的信息 打开“classwizard”对话框,然后 切换到“class info”页面。改变 “message filter”,如选择“window”, “message”页面 就会出现 window 的信息。 12. 如何检测程序中的括号是否 匹配 把光标移动到需要检测的括号前 面,按快捷键“ctrl + ”。如果括号匹配 正确,光标就跳到匹配的括号处,否则 光标不移动,并且机箱喇叭还会发出一 -精选财经经济类资料- -最新财经经济资料-感谢阅读- 24 声警告。 13. 如何查看一个宏的定义 把光标移动到要查看的一个宏上, 就比如说最常见的 declare_map_message 上按一下 f12,如果没有建立浏览文件, 就会出现提示对话框,按按钮,然后就 会跳到该宏定义的地方。 14. 如何添加 lib 文件到当前工 程 单击菜单弹出“project setting” 对话框,切换到“link” 标签页,在 “object/library modules”处输入 lib 文件 名称,不同的 lib 之间用空格格开。 15. 如何快速删除项目下的 debug 文件夹中临时文件 在工作区的 fileview 视图中选中 对应的项目,单击右键弹出菜单,选择 菜单即可。 16. 如何快速生成一个现有工程 除了工程名外完全相同的新工程 在新建工程的“new”对话框中选 择“custom appwizard”项,输入新工程的 -精选财经经济类资料- -最新财经经济资料-感谢阅读- 25 名字,单击 按钮。出现“custom appwizard”项, 输入新工程的名字,单击按钮。出现 “custom appwizardstep 1 of 2”对话框, 选择“an existing project”项,单击 按钮。出现“custom appwizardstep 2 of 2”对话框,选择现 有工程的工程文件名,最后单击按钮。 编译后就生成一个与现有工程相同但可 以重新取名的工程 appwizard。 现在就可以项用 mfc appwizard 一样用这个定制的向导。如果不想用了, 可以在 visual c+ 6.0 安装目录下 commonmsdev98template 目录中删除该 wizard 对应的.awx 和.pdb 文件。 17. 如何解决 visual c+ 6.0 不正 确连接的问题 情景:明明改动了一个文件,却 要把整个项目全部重新编译链接一次。 刚刚链接好,一运行,又提示重新编译 链接一次。 这是因为出现了未来文件的缘故。 -精选财经经济类资料- -最新财经经济资料-感谢阅读- 26 可以这样处理:找到工程文件夹下的 debug 目录,将创建和修改时间都比系 统时间的文件全部删除,然后再从新 “rebuild all”一次。 18. 引起 lnk2014 的常见错误都 有哪些 遇到的 lnk2014 错误主要为: unresolved external symbol “symbol” 如果链接程序不能在所有的库和 目标文件内找到所引用的函数、变量或 标签,将产生此错误信息。 一般来说,发生错误的原因有两 个:一是所引用的函数、变量不存在, 拼写不正确或者使用错误;其次可能使 用了不同版本的链接库。以下是可能产 生 lnk2014 错误的原因: 由于编码错误导致的 lnk2014 错 误 不相匹配的程序代码或模块定义 文件导致 lnk2014。例如,如果在 c+ 源文件了内声明了一变量“var1”,却试 图在另一个文件内以变量“var1”访问改 -精选财经经济类资料- -最新财经经济资料-感谢阅读- 27 变量。 如果使用的内联函数是在.cpp 文 件内定义的,而不是在头文件内定义将 导致 lnk2014 错误。 调用函数时如果所用的参数类型 和头函数声明时的类型不符将会产生 lnk2014 错误。 试图从基类的构造函数或析构函 数中调用虚拟函数时将会导致 lnk2014 错误。 要注意函数和变量的可公用性, 只有全局变量、函数是可公用的。静态 函数和静态变量具有相同的使用范围限 制。当试图从文件外部方位任何没有在 该文件内声明的静态变量时将导致编译 错误或 lnk2014 错误。 由于编译和联机的设置而造成的 lnk2014 错误 如果编译时使用的是/nod 选项, 程序所需要的运行库和 mfc 时将得到又 编译器写入目标文件模块,但除非在文 件中明确包含这些库名,否则这些库不 -精选财经经济类资料- -最新财经经济资料-感谢阅读- 28 会被链接进工程文件。这种情况下使用 /nod 将导致 lnk2014 错误 如果没有为 wwinmaincrtstartup 设定程序入口,在使用 unicode 和 mfc 时将出现“unresolved external on _winmain16”的 lnk2014 错误信息。 使用/md 选项编译时,既然所 有的运行库都被保留在动态链接库之内, 源文件中对“func”的引用,在目标文件 里即对“_imp_func”的引用。如果试图 使用静态库 libc.lib 或 libcmt.lib 进行链 接,将在_imp_func 上发生 lnk2014 错误。如果不使用/md 选项编译,在使 用 msvcxx.lib 链接时也会发生 lnk2014 错误。 使用/ml 选项编译时,如用 libcmt.lib 链接会在_errno 上发生 lnk2014 错误。 当编译调试版的应用程序时,如 果采用发行版模态库进行链接也会产生 lnk2014 错误;同样,使用调试版模态 库链接发行版应用程序时也会产生相同 -精选财经经济类资料- -最新财经经济资料-感谢阅读- 29 的错误。 不同版本的库和编译器的混合使 用也能产生问题,因为新版的库里可能 包含早先的版本没有的符号和说明。 在不同的模块中使用内联和非 内联的编译选项能够导致 lnk2014 错误。 如果创建 c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农村集体设备租赁合同范本
- 代理全转让合同范本
- 临时材料购买合同范本
- 包人工电缆合同范本
- 第二单元第11课《while循环的应用实例》教学设计 2023-2024学年浙教版(2020)初中信息技术八年级上册
- 农村闲置小学出租合同范本
- 出口尿素销售合同范本
- 企业团队建设合同范本
- 出售旧材料合同范本
- 人事调动合同范本
- 2025年上半年中煤科工集团商业保理限公司招聘易考易错模拟试题(共500题)试卷后附参考答案
- 2025年南京机电职业技术学院高职单招语文2018-2024历年参考题库频考点含答案解析
- 英语-九师联盟2025届高三年级上学期1月质量检测试题和答案
- 电力企业发电企业设备点检定修培训教材
- 流行性感冒诊疗方案(2025年版)
- 2024CSCO免疫检查点抑制剂相关的毒性管理指南
- 《影像增强检查外周静脉通路三级评价模式应用规范》编制说明
- 2025年社区计生工作计划(三篇)
- 2025年湖北中烟工业限责任公司招聘笔试高频重点提升(共500题)附带答案详解
- 2025江西上饶经济技术开发区招商集团限公司招聘29人高频重点提升(共500题)附带答案详解
- 石油行业海洋石油勘探与开发方案
评论
0/150
提交评论