如何在MinGW中添加第三方库?

问题描述 投票:13回答:4

我刚刚按照以下方法设置了MinGW环境。此职位

但是如何添加第三方库呢?

mingw
4个回答
8
投票

一个库由两个主要部分组成--C头文件和编译后的对象代码存档。GCC有一系列令人困惑的方法来指定这些东西,但是假设你使用的是一个库。foo.a 它位于相对的目录路径中 foo/lib和一个头 foo.h 住在 foo/inc. 你自己的C代码住在 main.c 并且看起来像这样。

#include "foo.h"
int main() {
  return FooFunc();    // call function in foo.a
}

要编译这个,你可以使用命令行。

gcc main.c -Ifoo/inc foo/lib/foo.a -o main.exe

-I标志添加到搜索头文件的路径中. 你也可以添加到lib路径中,但这样一来事情就变得复杂了 :-)


5
投票

和其他系统使用 gcc

  • 取材
  • 刁难
  • 运行configure -- 这可能需要一两次调整
  • 使
  • 安装

现在使用您的新库,并有适当的 -Lfoo/bar -lfoobar 开关。

我推荐 MSys 围绕 MinGW 为了做到这一切。


2
投票

我只是通过自己的摸索来解决这个问题。我强烈建议阅读 连接方式 在MinGW网页上。仔细阅读它们,因为有相当多的内容需要接受。但它们非常详尽,所以非常值得您花时间。

基本上有两种方法。首先,你可以把MinGW当作一个编译器,因为它就是编译器,并从cmd.exe(命令提示符)或IDE中调用它。另一种方法是使用MSYS,它基本上是一个Unix风格的shell,你可以在Windows上运行它来使用Unix风格的构建工具,比如configure和make。

对于这两种方式,你真的必须阅读我上面链接的howto,以了解依赖路径是如何被搜索的。我不愿意在这里解释它,因为它已经在 howtos 中解释过了,重复这些信息不是一个好主意。如果你看完后有具体问题,我很乐意提供更多的帮助。


0
投票

因为这是我在SO上花了好几个小时的时间研究,才让这个第三方在MinGW下运行,一个清晰的例子可能会帮助其他和我一样的新手。问题是如何添加第三方库,答案是:你最好不要真的添加,你只是把它们作为参数(@anon已经说过了).我参考@kjoppy的链接推荐。来自 http:/mingw.orgwikiIncludePathHOWTO。,在底部。

作为备选方案(2)的一个变化,为每一个要在本地安装的外部库包建立一个单独的目录层次;这减少了备选方案(1)的所有缺点,以及备选方案(2)的库包混合,但会带来另一种惩罚。 -- 和方案(2)一样,在每次GCC调用中必须添加适当的"-I DIR "和"-L DIR "选项;然而,方案(2)只需要为每一种类型增加一个路径,而这个方案则需要为每一个要部署的外部库增加一个类型的路径。虽然通过适当的定制GCC规范文件,或者适当的指定CPATH和相关的环境变量,仍然可以实现这一点,但额外的复杂性和维护开销,可能会被许多用户认为是不可接受的)。

综上所述,他们认为GCC Specs File或CPATH作为 "真正的第三方lib集成 "的选项,对于 "普通 "用户来说有太多额外的维护开销,我们应该像下面的例子一样调用。

hello. c:

#include <stdio.h>
#include <mysql.h>
int main()
{
    printf("Hello world\n");
    return 0;
}

我使用mariadb连接器包含了mysql.h,其中包含的内容和lib与gcc默认值分开保存。这可以从命令行中调用(I是include,L是library,这些字母后面的空格是可选的)。

gcc -o hello hello.c -I "C:\\Program Files\\MariaDB\\MariaDB Connector C 64-bit\\include" -L "C:\\Program Files\\MariaDB\\MariaDB Connector C 64-bit\\lib\\" -lmariadbclient

如果你想在VS Code中运行一个构建任务,我建议使用extensionCC++ Compile Run(extension id: danielpinto8zz6.c-cpp-compile-run),按F7键,然后只输入参数。

-I "C:\\Program Files\\MariaDB\\MariaDB Connector C 64-bit\\include" -L "C:\\Program Files\\MariaDB\\MariaDB Connector C 64-bit\\lib\\" -lmariadbclient

而c_cpp_properties.json必须是这样的。

{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}/**",
                "C:\\Program Files\\MariaDB\\MariaDB Connector C 64-bit\\include"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "compilerPath": "C:\\Program Files (x86)\\mingw-w64\\i686-8.1.0-posix-dwarf-rt_v6-rev0\\mingw32\\bin\\gcc.exe",
            "cStandard": "c11",
            "cppStandard": "gnu++14",
            "intelliSenseMode": "clang-x86"
        }
    ],
    "version": 4
}

这是在重复这里或其他类似问题的一些答案,但它们对我的帮助还不够大,无法让我真正快速上手,所以我才发一个新的答案。

© www.soinside.com 2019 - 2024. All rights reserved.