繁体   English   中英

如何安装 C++ 库以便我可以使用它?

[英]How do I install a c++ library so I can use it?

我有一个叫做BASS的库,它是一个音频库,我将用它来用麦克风录音。 我拥有使用它所需的所有文件,但我不知道如何安装该库。 我尝试将示例文件放在与 bass.h 文件相同的目录中。 但是我收到了一堆错误,说有不存在的函数调用。

所以我的问题是,如何安装它才能使用它?

安装 C++ 库意味着向感兴趣的软件(例如编译器)指定两种文件的位置:头文件(典型的扩展名 *.h 或.hpp)和编译对象(例如.dll 或 *.lib)。

头文件将包含库作者向开发人员公开的声明,您的程序将在其源代码中#include 它们,dll 将包含编译后的代码,这些代码将被或链接在一起并由您的程序使用,它们将被由链接器找到(或动态加载,但这是另一个步骤)。

所以你需要

  1. 将头文件放在编译器知道的位置(通常 IDE 允许设置所谓的包含目录,否则在调用编译器时指定一个标志,如-I<path-to-headers>
  2. 将 dll 文件放在您的链接器知道的位置(您的 IDE 肯定会允许这样做,否则您指定一个标志,如-L<path-to-libraries> -l<name-of-libraries>

最后但并非最不重要的一点,既然我看到 BASS 库是一个商业产品,他们可能会提供一些安装说明?

在终端或控制台中运行此命令。

cpp -v

请注意,在输出的末尾,您将看到如下一行:

#include<...> search starts here:

该行下方将有一个目录列表。 将包文件夹移动到这些目录之一。 然后尝试使用 <> 导入模块。

请参阅下面的代码,不要忘记将bass.dll 放在您的exe 文件的目录中,并将文件bass.lib 包含在您的项目中,并且不要忘记在其中包含bass.h 和bass.lib 的路径项目的默认包含和 lib 路径。

#include <iostream>
#include "bass.h"

using namespace std;

int main(int argc, const char **argv)
{
   if (!BASS_Init(-1, 44100, 0, NULL ,NULL)) 
   {
   cout<<"Can't initialize device";
   return -1;
   }

            int stream = BASS_StreamCreateFile(false, "D:\\mypro\\Trans_Langs\\germ\\quran_amma\\Translations\\Sound_aya\\Sora1\\Hafs\\basfar\\a7.mp3", 0L, 0L, 0);
            if (stream != 0)
            {
                // play the stream channel
                BASS_ChannelPlay(stream, false);
            }
            else
            {
                // error creating the stream
                cout<<"Stream error: {0}", BASS_ErrorGetCode();
            }

   getchar();

            BASS_StreamFree(stream);
            // free BASS
            BASS_Free();

 return 0;
}

如果有名为configureMakefileinstall文件,您可以尝试按该顺序运行它们。 之后,任何想要链接到这个库的程序都必须使用这样的命令:

c++ <your_program.cpp> -l<library_name> -L<path_where_library_is_installed>

库路径通常是原始库文件夹本身,除非您明确更改它或库本身将其文件放在全局位置,例如/usr/local或类似的位置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM