如何将库构建为 .dll 而不是 .lib

Posted

技术标签:

【中文标题】如何将库构建为 .dll 而不是 .lib【英文标题】:How can I build a library as a .dll and not a .lib 【发布时间】:2014-01-28 13:54:19 【问题描述】:

我得到了这个 c++ 物理库liquidfun

他们包含了一个用于构建 Windows 库的 Visual Studio 解决方案。 当我构建它时,它给了我一个 .lib 但我想要一个 .dll 以便我可以将它与 Unity3d 一起使用。 有没有办法在 Visual Studio 中更改项目的构建设置以获取 .dll 而不是 .lib?

编辑: 仅在项目属性中更改它的非常简单的修复实际上对我有用!这可能是由于库本身写得很好。 当我在发布这个问题之前尝试同样的事情时它没有工作,但这是由我的 c++ 代码问题引起的

【问题讨论】:

我对 Unity3d 不熟悉。为什么它需要 dll 而不是 lib?如果库开发人员只将其编译为静态库,这比按下开关更复杂。 这对我来说像是一个 CMake 问题。在使用 CMake 作为项目生成器构建的项目上,您可以在 CMake 而不是 Visual Studio 中更改此设置。 试试这个:项目属性>常规>配置类型>选择“动态库.DLL”但是我想它比这更复杂...... 应该比这更复杂。如果 CMake 重新生成此更改将被删除。此外,您可能还需要一个预处理器定义 它是否给你一个库?在构建 DLL 时,MSVC++ 通常会在旁边生成一个小库。这称为导入库,实际上并不包含来自 DLL 的代码 - 只是入口点。 【参考方案1】:

最简单的方法是从 cmake 构建您的 VS 解决方案。 我现在手头没有参数,但是 cmake 可以为您列出参数。 我想是-DBUILD_SHARED_LIBS

【讨论】:

【参考方案2】:

是的,您可以生成 dll 而不是 lib。要在 VS 中执行此操作,请右键单击您的项目 -> 属性 -> 配置属性 -> 常规。在“项目默认”部分中,转到“配置类型”并将其更改为“动态库 .dll”。然后不要忘记生成它;)

PS : DLL,当然不是 >LIB ;)

【讨论】:

以上是关于如何将库构建为 .dll 而不是 .lib的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 应用程序中使用 C++ 库?

当您的外部 SDK 只有 .dll、.lib、.h 文件时如何链接和构建项目

MFC下的DLL编程学习

如何将库源附加到 JetBrains Rider

C++ 可执行文件是不是包括 .obj、.lib 和 .dll?

如何在 Windows 上获取 lib_mysqludf_sys.dll 文件