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

5

我拥有这个c++物理库liquidfun

他们为在Windows上构建该库提供了Visual Studio解决方案。 当我构建它时,会给我一个.lib文件,但我想要一个.dll文件,以便在Unity3d中使用它。 有没有一种方法可以在Visual Studio中更改项目的构建设置,以获取.dll而不是.lib文件?

编辑: 实际上,只需在项目属性中进行更改就可以简单地解决问题!这可能是由于库本身编写得非常好。 在发布此问题之前,当我尝试相同的方法时它无法正常工作,但那是由于我的c++代码存在问题。


我不熟悉Unity3d。为什么它需要一个dll而不是一个lib?如果库的开发者只打算将其编译为静态库,那么这比按一个开关更复杂。 - typ1232
这对我来说看起来像是一个CMake的问题。在使用CMake作为项目生成器构建项目时,您需要在CMake中更改此设置,而不是在Visual Studio中更改。 - drescherjm
尝试这个:项目属性 > 一般 > 配置类型 > 选择“动态库 .DLL”,不过我猜这可能比那更复杂... - Manex
它应该比那更复杂。如果CMake重新生成,这个更改将被删除。此外,您可能还需要一个预处理器定义。 - drescherjm
2
它是否只提供一个库?在构建DLL时,MSVC++通常会在旁边生成一个小型库。这称为导入库,实际上并不包含DLL中的代码 - 只有入口点。 - MSalters
2个回答

2

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


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接