• VisualGDB系列11:Linux C++项目中使用外部Linux库


      根据VisualGDB官网(https://visualgdb.com)的帮助文档大致翻译而成。主要是作为个人学习记录。有错误的地方,Robin欢迎大家指正。

             在《使用VS创建Linux静态库和动态库》文档中,我们介绍了如何在VisualGDB创建的应用程序中如何使用VisualGDB创建的库(静态库/动态库)。本文介绍在VisualGDB项目中使用外部的Linux库(非VisualGDB创建的)。我们创建一个Linux项目,该项目使用Magick++库来翻转图片。

    1 启动Linux项目向导

             启动VS,选择”File”->”New”->”Project”,然后选择”VisualGDB”->”Linux Project Wizard”。设定项目名称和位置后,点击”OK”按钮:

                           

    2 选择项目类型

             在下一页,项目类型选择”Application”,然后点击”Next”:

     

    3 选择远程Linux机器

             在下一页选择你想使用的Linux机器。我们需要在Linux机器上安装Magick++库,所以在”Remote computer”的右侧点击console按钮来打开一个新的SSH console:

     

    4 安装libmagick库

             安装libmagick++-dev包。如果你的Linux系统是基于Debian的,在console窗口中运行如下命令:

    sudo apt-get install libmagick++-dev

     

             当安装完成后,回答VisualGDB向导并点击”Next”。

    5 设置源码访问方式

             为了使Linux机器轻松访问Windows项目文件夹中的文件,我们将使用共享文件夹方式,选择”Mount a shared Windows folder”并点击”setup”:

     

    6 创建共享文件夹

             VisualGDB会建议共享包含项目文件夹的其中一个文件夹。本例中,项目位于目录” c:projectsRotateDemo”下,我们将共享目录” c:projects”。为了让Linux电脑访问你的共享文件夹,你需要提供有效的凭证:

     

    7 选择登录点(mount point)

             点击”OK”后,VisualGDB会让你选择mount point,用于映像你的文件夹。本例中,我们使用” /opt/VisualGDB-projects”:

     

    8 检查Windows和Linux之间的通信路径状态

             文件夹被共享及登录后,在向导页面的底部有个图表,用来检测Linux和Windows之间的通信路径状态:

     

    9 完成项目创建

             点击”Finish”后,VisualGDB就创建了一个”Hello,World”项目,点击”Ctrl-Shift-B”来build:

     

    10 创建一张图片

             配置好共享文件夹后,Linux电脑就能够自动访问Windows项目目录下的文件,也能在该目录下写文件。在项目目录下创建一个名叫ArrowRight.png的文件,并在上面画一个箭头:

     

    11 添加远程ImageMagick库

             现在需要配置IntelliSense来支持ImageMagick头文件。在项目上右键,选择”VisualGDB Project Properties”,进入IntelliSense页面:

     

             点击”Add Remote”:

     

             点击浏览按钮并选择” /usr/include/ImageMagick”:

     

             点击”OK”会保存所有的设置。VisualGDB会将目录添加到IntelliSense搜索路径下。如果你近期也安装了其他的库,点击”Edit Remote Cache”,选择所有的目录并点击”Reload”:

     

    12 修改main源码

             修改main源码的内容如下:

    #include<Magick++.h>
    
    #include<stdio.h>
    
     
    
    int main(int argc, char *argv[])
    
    {
    
        if (argc < 3)
    
       {
    
           printf("Usage: %s <Input file> <Output file>", argv[0]);
    
            return 1;
    
       }
    
     
    
       printf("Opening...
    ");
    
       Magick::Image img(argv[1]);
    
     
    
       printf("Rotating...
    ");
    
       img.rotate(45);
    
     
    
       printf("Saving...
    ");
    
       img.write(argv[2]);
    
     
    
        return 0;
    
    }

    13 处理build错误

             Build项目时会提示错误信息:

     

             产生这个错误是因为,GCC include目录和IntelliSense include目录是分开管理的。要解决这个问题,需要打开文件flags.mak并在INCLUDE_DIRS 声明中添加/usr/include/ImageMagick。现在build会成功但会提示链接错误:

     

    14 修改链接错误

             要修改链接(linker)错误,需要将Magick++库添加到LIBRARY_NAMES中:

     

             注意一下,真实的库名字为libMagick++.a,该库位置为标准库的其中一个目录。在flags.mak文件中删除lib前缀,就像GCC按约定需要的一样。

    15 提供命令行参数来运行程序

             运行前我们需要提供命令行参数。最快捷的方式是使用VisualGDB工具栏。在工具栏区域右键使能工具栏并选择VisualGDB。然后在文本区域输入” ArrowRight.png ArrowRotated.png”:

     

    16 运行并观察结果

             按F5运行程序,或者按F10单步进入:

     

             打开项目文件夹查看程序创建的ArrowRotated.png文件:

     

             在VS输出面板的VisualGDB Program Output视图里,可以看到最新的调试信息:

     

  • 相关阅读:
    Python+SparkStreaming+kafka+写入本地文件案例(可执行)
    Python安装pycurl失败,及解决办法
    Linux screen用法简介
    [算法]数组中求出下标不连续的任意个数,使得和最大
    消息队列小结
    [算法]计算全排列组合数
    [数据结构]A*寻路算法
    [数据结构]最大流之Ford-Fulkerson算法
    [数据结构]最小生成树算法Prim和Kruskal算法
    [数据结构]迪杰斯特拉(Dijkstra)算法
  • 原文地址:https://www.cnblogs.com/robinex/p/7887695.html
Copyright © 2020-2023  润新知