尚正辉
总结与补充
2018-9-30 16:45
阅读:2898

 

一般的变量初始化等错误,我们都能通过错误列表定位到代码段,进而解决,而添加宏定义、头文件包含路径,容易被开发者忽略。下面总结一下在编译RTKLIB开源库中,所做的添加宏定义、头文件包含路径等操作。

1C/C++下预处理器里面我们添加了

配置属性 ->C/C++ -> 预处理器-> 预处理器定义-> 编辑

       _CRT_SECURE_NO_WARNINGS

        _WINSOCK_DEPRECATED_NO_WARNINGS

        ENAGLO

        DLL

WIN32

2C/C++下的附加包含目录 里面我们添加了

配置属性 ->C/C++ 常规-> 附加包含目录-> 编辑

       .\src

3)连接器下的附加依赖项 里面我们添加了

 配置属性 -> 链接器 -> 输入 -> 附加依赖项

        winmm.lib

        ws2_32.lib

 

         通过上面的设置,我们可以发现,我们大多操作的是[C/C++]下的配置选项,而同样,在[VC++]配置选项下,同样有[包含目录],作用几乎与[C/C++]下面的[附加包含目录]一样,我们首先了解【包含目录、库目录、附加包含目录、附加库目录、附加依赖项区别】

VC++目录

    包含目录:寻找#include<xxxx.h>中的xxxx.h的搜索目录

    库目录:寻找.lib文件的搜索目录

C/C++

    常规->附加包含目录:寻找#include<xxxx.h>中的xxxx.h的搜索目录(每一项对应一个文件夹XXXX,文件夹中包含了编译时所需的头文件,使用时直接#include<XXXX>即可)

链接器

    常规->附加库目录:寻找.lib文件的搜索目录

    输入->附加依赖项lib库(C++的库会把函数、类的声明放在*.h中,实现放在*.cpp*.c中。编译之后,*.cpp*.c会被打包成一个.lib文件,这样可以保护源代码)

故,包含目录和附加包含目录(库目录和附加库目录)的区别:

    包含目录:修改了系统的include宏的值,是全局的;

    附加包含目录:用于当前项目,对其他项目没有影响。

    (库目录和附加库目录的区别同上)

进而可知包含目录和附加包含目录(库目录和附加库目录)的区别主要在于全局还是当前,那么当需要对某工程添加这些目录时,通常情况下,都是在附加包含目录和附加库目录中添加的。

补充这些是因为,笔者刚开始编译RTKLIB库时,头文件的包含路径都是添加在[VC++/包含目录]下的,当时惊奇的发现,即使笔者一开始在[VC++/包含目录]下包含的是绝对路径,工程也是可以编译通过,并可以移植到任何地方的。但了解到以上以后,建议我们一般使用C/C++Linker下面的设置,而一般不建议使用VC++下面的设置。

 


转载本文请联系原作者获取授权,同时请注明本文来自尚正辉科学网博客。

链接地址:https://wap.sciencenet.cn/blog-3386358-1138023.html?mobile=1

收藏

分享到:

当前推荐数:0
推荐到博客首页
网友评论0 条评论
确定删除指定的回复吗?
确定删除本博文吗?