在 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软件怎样把游戏导出来