环境:

  win7_x64旗舰版、VS2017企业版、VMware10.0.2、CentOS7

  在CentOS7上首先需要安装gcc、g++和gdbserver,这里就不多说

一、安装VS2017

  1.1 安装VS2017时,必须要勾选“使用C++的Linux开发”工具集

二、创建Linux项目

2.1 创建一个名称为"TestLinux"的解决方案,我们稍后会在这个解决方案内新建多个Linux项目(包括可执行程序、动态库、静态库等)

2.2 添加新建项目可执行程序项目"test"

2.2.1

2.2.2

2.3 添加新建项目,创建动态库

2.3.1

2.3.2

2.4 添加新建项目,创建静态库

2.4.1

2.4.2

三、添加测试代码

3.1 "test"项目中main.cpp代码:

#include <cstdio>#include "static_library/static.h"
#include "dynamic_library/dynamic.h.h"int main()
{printf("hello from test!\n");printf("static_library test : %d\n", static_test(1));printf("dynamic_library test : %d\n", dynamic_test(1));return 0;
}

3.2 在"static_library"项目中添加static.h和static.cpp

static.h

#ifndef _STATIC_LIBRARY_H_
#define _STATIC_LIBRARY_H_int static_test(int n);#endif // !_STATIC_LIBRARY_H_

static.cpp

#include "static.h"int static_test(int n)
{return n * 3;
}

3.3 在"dynamic_library"项目中添加dynamic.h和dynamic.cpp

dynamic.h

#ifndef _DYNAMIC_LIBRARY_H_
#define _DYNAMIC_LIBRARY_H_int dynamic_test(int n);#endif // !_DYNAMIC_LIBRARY_H_

dynamic.cpp

#include "dynamic.h"int dynamic_test(int n)
{return n * 2;
}

四、项目配置

4.1 "常规"配置

配置主程序:

本地输出目录:"$(ProjectDir)bin\$(Platform)\$(Configuration)\"修改为"$(ProjectDir)..\bin\$(Platform)\$(Configuration)\",是为了将所有项目输出文件放到同一个目录中,方便相互引用。

目标文件扩展名:".out"修改为"",是为了不生成文件后缀,一般的Linux可执行程序是没有扩展名称的,可修改也可不修改。

远程生成根目录:"~/projects"修改为"/root/projects/$(SolutionName)","~"和"/root"是等价的,但是运行时动态库搜索目录不支持~路径,添加“$(SolutionName)”是为了区分不同的解决方案下相同名称的项目。

远程生成项目目录:"~/projects"修改为"/root/projects/$(SolutionName)","~"和"/root"是等价的,但是运行时动态库搜索目录不支持~路径,添加“$(SolutionName)”是为了区分不同的解决方案下相同名称的项目。

配置动态库:"$(RemoteRootDir)/$(ProjectName)"修改为"$(RemoteRootDir)"

本地输出目录:"$(ProjectDir)bin\$(Platform)\$(Configuration)\"修改为"$(ProjectDir)..\bin\$(Platform)\$(Configuration)\"

目标文件扩展名:".out"修改为".so"

远程生成根目录:"~/projects"修改为"/root/projects/$(SolutionName)"

配置类型:"应用程序(.out)"修改为"动态库(.so)"

配置静态库:

本地输出目录:"$(ProjectDir)bin\$(Platform)\$(Configuration)\"修改为"$(ProjectDir)..\bin\$(Platform)\$(Configuration)\"

目标文件扩展名:".out"修改为".a"

远程生成根目录:"~/projects"修改为"/root/projects/$(SolutionName)"

配置类型:"应用程序(.out)"修改为"动态库(.a)"

4.2 "调试"配置

程序:"$(RemoteTargetPath)"修改为"$(RemoteRootDir)/bin/$(Platform)/$(Configuration)/$(TargetName)$(TargetExt)",因为前面修改了本地输出目录导致远程输出目录也相应发生变化,这里修改一致。

工作目录:"$(RemoteOutDir)"修改为"$(RemoteRootDir)/bin/$(Platform)/$(Configuration)",这个是远程主机CentOS上的路径,如果设置不正确将找不到引用的动态库,调试程序无法启动。

其他调试程序命令:""修改为"set solib-search-path $(SolutionDir)bin/$(Platform)/$(Configuration)",这个是本地路径,调试符号是从本地加载的,否则调试动态库时,gdb会输出没有找到调试符号文件。

4.3 "C/C++"配置

附加包含目录:在"$(StlIncludeDirectories);%(AdditionalIncludeDirectories)"前面添加"./..;",这个是远程主机CentOS上的路径,相当于gcc编译时指定"-I[路径]"选项;一般是先把需要的头文件从CentOS复制到windows,然后设置"配置属性"->"VC+ +目录"->"包含目录",这样在编写Linux程序时,提示信息更加的友好^^。

4.4 "链接器"配置

附加库目录:在"%(AdditionalLibraryDirectories)"前面添加"$(RemoteRootDir)/bin/$(Platform)/$(Configuration);",这个是远程主机CentOS上的路径,相当于gcc编译时指定"-L[路径]"选项,用于指定引用动态库和静态库的目录;

库依赖项:添加"dynamic_library;static_library",相当于gcc设置"-l[库名称]"选项,用于指定链接时所需要的动态库和静态库名称,如果找不到依赖的库文件,链接时会错误,显示"无法解析的符号"。

其他选项:添加"-Wl,-rpath=$(RemoteRootDir)/bin/$(Platform)/$(Configuration) ",指定程序运行时搜索动态库的路径。

五、开始调试

5.1 设置远程调试主机

5.2 显示Linux控制台

最后的Demo下载地址:TestLinux.zip

其他错误:

1)Inferior 1 (process 6074) exited normally

通常是没有生成Debug可执行文件,若使用cmake,则添加CMAKE_BUILD_TYPE=Debug,重新生成即可。

本文转载自:https://www.cnblogs.com/dongc/p/6599461.html

使用Visual Studio 2017开发Linux程序相关推荐

  1. Visual Studio 2017开发linux程序使用实例及原理简析

    1.下载安装vs开发linux程序的工具包 2.创建一个工程,选择跨平台里面的linux平台 3.写一段测试代码,这里就可以包含linux的系统头文件编译,不过vs下还是现实红的 #include & ...

  2. Visual Studio 2017开发linux程序之libevent使用实例

    下载源码编译安装后,samle里面有个hello-world.c就是最简单的一个tcp server端程序了 /*This example program provides a trivial ser ...

  3. 如何用 Visual Studio 2017 开发 Arduino 应用程序

    如何用 Visual Studio 2017 开发 Arduino 应用程序 使用Visual Studio 2017 开发 Arduino 应用程序需要两个软件: Visual Studio Vis ...

  4. 使用 Visual Studio 2022 开发 Linux C++ 应用程序

    使用 Visual Studio 2022 开发 Linux C++ 应用程序 前置条件: Windows上需要先安装 WSL2,方法见: Install WSL | Microsoft Docs 在 ...

  5. DCMTK 3.6.2(MD支持库)与Microsoft Visual Studio 2017开发环境的搭建

    DCMTK 3.6.2(MD支持库)与Microsoft Visual Studio 2017开发环境的搭建 DCMTK 362MD支持库与Microsoft Visual Studio 2017开发 ...

  6. 使用Visual Studio 2017开发Windows UWP应用

    使用Visual Studio 2017开发Windows UWP应用 今天开始学习Windows UWP应用开发 学习的视频资料来自Bilibili上"微软信仰中心"添加翻译字幕 ...

  7. vs2017 linux工程设置头文件,使用Visual Studio 2017作为Linux C++开发工具

    Visual Studio 2017 VS2017亮点很多,包括模块化安装.启动速度加快(第一次启动加快50%以上).github插件.启动页完善.增强代码提示功能,等等,更多参考:https://w ...

  8. 使用Visual Studio 2017作为Linux C++开发工具

    Visual Studio 2017 微软的宇宙第一IDE Visual Studio 2017正式版出来了,地址是:https://www.visualstudio.com/vs/whatsnew/ ...

  9. Visual Studio 2017 - Windows应用程序打包成exe文件(1)- 工具简单总结

    最近有对一个Windows应用程序少许维护和修改.修改之后要发布新的exe安装文件,打包exe文件时,遇到了很头疼的问题,还好最后解决了,记录一下. Visual Studio版本:Visual St ...

  10. 使用Visual Studio Code开发.NET程序

    Visual Studio Code 成为个人使用频率最高的应用程序了,层出不穷的插件为 Code 的应用场景提供了无限可能.本文介绍在 Visual Studio Code 中开发 .NET 程序的 ...

最新文章

  1. 一次项目管理交流会总结
  2. adb 相关问题总结
  3. imagej之Python脚本
  4. 快速上手Linux核心命令(二):关机、重启
  5. Linux重要的热键[Tab]、[Ctrl]-c、[Ctrl]-d介绍
  6. win11系统txt文件怎么加密 windows11txt文件加密的解决方法
  7. mysql汪晓青课后答案_MySQL数据库基础实例教程
  8. Hookswork补单逻辑说明——多帐户跨平台MT4跟单软件
  9. 电脑常见的故障和解决办法
  10. Python类型说明符、格式限定符(格式说明符)
  11. js实现动画(移动方块)
  12. 数据挖掘 顶级期刊_数据挖掘领域顶级会议期刊及其分析
  13. android 6 连接电脑,安卓手机怎么连接电脑?附详细的方法和步骤
  14. 跨数据中心场景下,kafka集群部署模式
  15. PathMeasure 轨迹动画神器 路径动画
  16. iphone OS、Android、Blackberry OS与Palm OS的比较
  17. 题目:输入某年某月某日,判断当日是星期几? 提示:1900年1月1日为星期一
  18. python底层是用什么语言实现的_我为何说Python是全栈式开发语言?
  19. 谷歌出品开发必备开源图片压缩工具,终于知道图片压缩了啥
  20. 【idea】Error:java: Annotation processing is not supported for module cycles. Please ensure that all..

热门文章

  1. createdroptargets_拖拽神器React DnD你真的了解了吗?
  2. Vue-购物车简单案例
  3. spss中的aic值计算_常用SPSS数据处理方法,你都会吗?
  4. Introduction to Computer Networking学习笔记(十二):Retransmission Strategies重传策略
  5. xstream不映射字段_XStream序列化与反序列化对象
  6. junit测试mysql_使用Junit单元测试及操作MySQL数据库时出现错误及解决方法
  7. net导出到excel数字变为科学技术法
  8. Nginx教程(三) Nginx日志管理 (转)
  9. Java集合类源码解析:Vector
  10. OSGI.NET,请求因HTTP状态404 失败:Not Found