当前位置: 首页 > news >正文

CC++多系统集成需要注意的问题

C&C++系统,经常遇到要多系统继承的情况,比如把一个第三方库引入到一个现有系统中,或者集成几个现有库,有些时候,我们发现编译和链接会发生一些莫名奇妙的问题,下面把遇到的问题给于总结:

1. 编译错误

(1)头文件没找到

这种情况解决起来比较简单,先确定系统里到底没有引用到的头文件,有的话再确定编译器是否能找到头文件所在的路径。

(2)类型、变量或者函数未声明

有两种情况:

A. 有多个同名头文件,结果编译器首先找到的并不是实际需要的

解决办法就是:把需要的头文件路径放在前边

B. 引用到了正确的头文件,而且明明就是声明了或者定义了,还是说没找到

问题很可能就是出在了条件编译上,某些编译环境定义的宏挡住了真正的定义,可用#error "Msg" 测试到底编译器处理没处理定义部分,打开宏即可

2. 链接错误

编译错误一般就是符号没找到,有两大类情况:

(1). 确实没有定义符号

这个需要添加了,没什么其他办法

(2). 确实定义了符号,链接还是说找不到,有三种情况:

A. 条件编译挡住了函数定义

可以看下编译器是否编译到了需要的接口

B. nm类似的命令可看是否有符号定义,这种情况下最有可能的原因是.o文件重名了,可看下符号具体所在的源文件名,修改至不重名即可.

C. C++调用C函数时候,会默认认为是需要命名转换的,比如Revert接口,C++会调用_zxyRevert_sjX3类似的接口,但是相应的C源码被编译后,生成的符号是_Revert,这时候

需要把C++中引用到的C接口,用extern "C"声明下即可,这也是extern "C"的作用了.

 

综上,需要注意的是,C++引用C接口头文件重名源文件重名,经常会带来莫名其妙的问题,需要加以注意!

转载于:https://www.cnblogs.com/linucos/archive/2012/02/13/2349835.html

相关文章:

  • IBM申请通过分析代码递交判断程序员优劣
  • java中的Main方法..
  • Android腾讯微薄客户端开发十:博主广播篇
  • 我做项目这些年的经验
  • First Blood
  • jQuery插件 blockUI
  • JPA注解
  • 多线程编程
  • 分享20佳极具创意的网站导航菜单设计案例
  • Linux多进程_消息通信_设计思想交流(转)
  • 第一章:第二课 选择器-结构性伪类选择器[五]
  • nyoj 16 - 矩形嵌套
  • Excel导入导出
  • 基础常用JS
  • 记载公共语言运行库
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • Android单元测试 - 几个重要问题
  • ESLint简单操作
  • gulp 教程
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • Javascript编码规范
  • jquery cookie
  • Making An Indicator With Pure CSS
  • Nodejs和JavaWeb协助开发
  • react 代码优化(一) ——事件处理
  • vue-router的history模式发布配置
  • web标准化(下)
  • 程序员该如何有效的找工作?
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 解决iview多表头动态更改列元素发生的错误
  • 入门到放弃node系列之Hello Word篇
  • 思考 CSS 架构
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 我的面试准备过程--容器(更新中)
  • 小试R空间处理新库sf
  • 新书推荐|Windows黑客编程技术详解
  • 译米田引理
  • 与 ConTeXt MkIV 官方文档的接驳
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • 3月7日云栖精选夜读 | RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势 ...
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • 如何正确理解,内页权重高于首页?
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • #HarmonyOS:基础语法
  • #微信小程序:微信小程序常见的配置传旨
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (十八)SpringBoot之发送QQ邮件
  • (译) 函数式 JS #1:简介
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • ./configure,make,make install的作用