zoukankan      html  css  js  c++  java
  • C&C++多系统集成需要注意的问题

    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/p/2349835.html
Copyright © 2011-2022 走看看