zoukankan      html  css  js  c++  java
  • VS2017开发Linux平台上的程序

    重装系统后安装VS2015时卡住了,于是试试看VS2017怎样,听说还支持调Linux。发现VS2017跟12/13/15又有了新的飞跃,竟然支持模块化下载,对于我这种主要写C++简直是个福音,勾了Linux C++和MFC后,C盘+D盘也才6G,比起VS2015只额外勾MFC就有10G来说轻了这么多!

    VS2017只有在线安装包,寝室里下载不到10分钟就搞定了,迫不及待地新建项目

    哇擦,终于没有了微软地一堆.NET系列了!

    然后现在就开始配置跨平台Linux开发环境,按照官网教程

    https://blogs.msdn.microsoft.com/vcblog/2016/03/30/visual-c-for-linux-development/

    我的Linux是Ubuntu 16.04,微软支持14.04和16.04,所以可以使用。首先为了支持远程调试,Linux那边需要安装一些服务

    sudo apt-get install openssh-server g++ gdb gdbserver

    这里我一开始发现Linux不能联网,原来是之前在实验室里设置了静态IP,回寝室后,由于这个静态IP和寝室的路由器支持IP不是一个网段,导致需要重新修改IP跟主机一个网段。具体参见之前的博客 虚拟机Linux桥接模式下设置静态IP

    新建一个Linux控制台项目,VS主页会有教程,于是迫不及待地写了份使用POSIX线程库的代码

    #include <cstdio>
    #include <cstdlib>
    #include <string.h>
    #include <pthread.h>
    
    void* thread_func(void* arg)
    {
        printf("线程函数: %s
    ", static_cast<char*>(arg));
        return nullptr;
    }
    
    int main()
    {
        pthread_t tid;
        int errnum = pthread_create(&tid, nullptr, thread_func,
            const_cast<char*>("Hello Linux!"));
        if (errnum != 0) {
            fprintf(stderr, "pthread_create error: %s
    ", strerror(errnum));
            exit(1);
        }
    
        errnum = pthread_join(tid, nullptr);
        if (errnum != 0) {
            fprintf(stderr, "pthread_join error: %s
    ", strerror(errnum));
            exit(1);
        }
    
        return 0;
    }

    使用POSIX线程时,编译选项需要加上-pthread,于是在菜单:调试->HelloLinux属性(这里HelloLinux是项目名称)中修改命令行参数

    既然是远程调试,那么自然需要远程连接了,写好代码后菜单:调试->生成解决方案(快捷键F7)后,会自动弹出连接框(端口号是22,即SSH连接,所以刚才才需要在Linux上安装openssh-server)

    在菜单:工具->选项->跨平台中,也可以看到远程连接地信息

    编译会出错,提示找不到pthread_create和pthread_join,但是我加了-pthread编译选项啊?原因是VS没有自动把Linux的头文件包含进来,因此需要手动把Linux系统的/usr/include、/usr/local/include目录复制到VS的linux头文件路径下,我的VS安装路径把默认的C盘改成了D盘,于是目录就是下面这个

    D:Program Files (x86)Microsoft Visual Studio2017CommunityCommon7IDEVCLinuxincludeusr

    然后要添加该目录到VS的头文件目录下

    然后程序参数也要修改

    之后就是F7组建、F5调试了,注意要在控制台显示结果必须打开Linux控制台(菜单:调试-Linux控制台)

    结果如图,程序运行成功了,但是中文字符乱码,原因是VS2017默认编码模式并不是UTF-8,这里需要安装插件

    菜单:工具->扩展与更新->联机,搜索UTF找到最顶上这个插件,下载

    之后重启VS,重新生成解决方案->开始调试,依然乱码。原因是更改了UTF-8之后,原来代码中的中文没有自动转换成UTF-8编码,但是显示的还是中文而非乱码,所以需要把中文部分全部删除然后再次键入,之后就成功了

    锵~锵~除了远程连接有点耗时间外,其余还是很满意的,VS大法好!

  • 相关阅读:
    74.QT窗口实现类的封装
    73,QT指针数组实战(指针数组与数组指针)
    72.函数模板指针与类函数模板的绑定
    71.lambda表达式的递归
    C++ new delete(一)
    ios之@class
    xcode菜单栏
    ios 自定义delegate(一)
    strong&weak
    TCP/UDP
  • 原文地址:https://www.cnblogs.com/Harley-Quinn/p/7465517.html
Copyright © 2011-2022 走看看