在 Microsoft Visual Studio 中的 x86 C++ 应用程序中集成犰狳

Posted

技术标签:

【中文标题】在 Microsoft Visual Studio 中的 x86 C++ 应用程序中集成犰狳【英文标题】:Integration of Armadillo in x86 C++ Application in Microsoft Visual Studio 【发布时间】:2021-09-11 18:37:17 【问题描述】:

自上周以来,我一直在使用“Armadillo”C++ 库。 我从 Microsoft Visual Studio 中的默认 64 位 C++ 应用程序开始。对于安装,我按照以下帖子中的步骤进行操作:

How can I install Armadillo on Windows?

按照这些步骤,一切对我来说都很好。

但现在我必须扩展我的 C++ 应用程序并且必须包含/集成另一个 .dll。我的问题是,这个 .dll 是一个 32 位的 .dll。因此,当我尝试在使用 Armadillo 库的 64 位应用程序中调用它时,我总是得到“类未注册”错误。这就是我想将整个项目迁移到 x86 应用程序的原因。但由于某种原因,我无法将犰狳库迁移到这个 x86 应用程序中(按照上面链接中的说明操作不再有效)。在构建程序时,我总是遇到超过 50 个“LNK2019”错误。

有谁知道如何解决这个问题并知道谁将 Armadillo 集成到 32 位应用程序中?

感谢您的帮助!!

【问题讨论】:

您需要用于 Armadillo 库的 32 位 DLL。 LNK2019 建议您没有在“Win32”构建配置(这是 32 位配置)中正确添加对库的引用。 好的,谢谢,我怀疑是这样的。有谁知道从哪里获得这些 32 位 DLL,因为犰狳的 .zip 只附带 64 位 DLL/.lib?还是我必须自己创建 32 位 DLL(使用 cMake 或其他东西)。如果是的话,有没有人有一个很好的教程/手册来做这件事?感谢您的帮助。 【参考方案1】:

解决了。

对我来说,它可以将默认从 Armadillo 安装的 x64 位“libopenblas.lib”和“libopenblas.dll”替换为 x86“libopenblas.lib”和“libopenblas.dll”,它们是包含在 GitHub 上 OpenBlas 发布页面的“OpenBLAS-0.3.15-x86.zip”下载文件中:

https://github.com/xianyi/OpenBLAS/releases

可能只替换“libopenblas.lib”文件就足够了。

【讨论】:

仅替换 .lib 文件可能不够。如果动态链接库,.lib 文件包含链接器用来插入对 DLL 导出的函数的调用的“存根”。链接步骤需要 .lib 文件,然后在运行时需要 .dll。 (如果您不是动态链接而是静态链接,那么您根本不需要 .dll,并且 .lib 文件包含函数的完整实现,链接器将其链接到您的 .exe 中。) 哦,谢谢,很高兴知道。我认为:就我而言,我只是静态链接。

以上是关于在 Microsoft Visual Studio 中的 x86 C++ 应用程序中集成犰狳的主要内容,如果未能解决你的问题,请参考以下文章

microsoft visual studio软件怎样把游戏导出来

如何下载microsoft visual studio

用microsoft visual studio 2008执行C语言出现栈溢出怎么解决?

microsoft visual c++里的编译在哪里?

Microsoft visual c++弹窗?

microsoft visual studio 2008找不到一个或多个组件,请重新安装应用程序 的原因都有哪些?