我已经处理这个问题几个星期了。我知道我可能只是错过了一个我没有意识到的小步骤。因此,任何见解都将受到高度赞赏。
我正在尝试添加一些外部库并在我的 C++ 项目中使用它们。但似乎无法弄清楚如何。我阅读了互联网上有关添加外部库的所有帖子,但我相信我错过了一些东西!
比方说,我想添加一个简单的库,例如 Eigen(仅包含标头的库)。我将包含所有文件的文件夹复制并粘贴到项目的子文件夹中。我将该子文件夹命名为 ThirdPartyLibraries。
INCLUDE_DIRECTORIES("${MAINFOLDER}/ThirdPartyLibraries/eigen")
我还有什么需要做的吗?
现在,假设我想添加另一个库,例如 XGBoost(它具有头文件和源文件)。会有什么不同呢?
我为 XGBoost 做了类似的事情。我的代码构建时可能不会出现错误,但只要我不引用库中的任何函数(基本上只是将库添加到我的项目中而不使用它)。当我尝试使用任何函数时,我收到有关“无法解析的外部符号”的错误,这让我认为在添加库时我丢失了一些东西。
我没有在我的 C++ 代码中添加任何库。因此,如果您能保持简单的解释,那就太好了!
因此,我解决了这个问题,并认为我可以将解决方案分享给其他可能遇到此问题的人。
添加 Eigen 库非常简单,因为它只是头文件。您只需将所有头文件复制并粘贴到项目目录中的某个位置并使用包含目录即可。之后你应该就好了。
关于 XGBoost 链接,他们刚刚添加了该项目的 cmake 文件。因此,您需要做的是在 Visual Studio 中构建该项目。构建后,您将获得 .lib、.dll 和 .exe 文件。您应该只需要 .lib 文件。将它们复制并粘贴到项目目录中的某个位置,然后将其链接到主项目,如下所示:
TARGET_LINK_LIBRARIES(ProjectName libxgboost)
然后,您必须将包含目录(包含头文件)从 xgboost 目录粘贴到项目目录中的某个位置。除了 libxgboost 之外,您还必须包含 Rabit 和 xgboost 库。因此,只需在复制和粘贴 libxgboost.lib 时复制并粘贴它们,并使用“target_link_directories”链接它们即可。
当您使用库中的任何函数时,请确保包含头文件。
希望这可以帮助那些在工作中遇到困难的人。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)