如何在Visual Studio 2012中同时使用dll和lib构建项目。

5
我成功设置了dll模式和库模式的构建项目,但是没有同时进行。如果要进行dll构建,请按以下步骤操作:
1. 选择项目->属性->配置类型: 动态库(.dll) 2. 选择项目->属性->目标扩展名: .dll
如果要进行库构建,请按以下步骤操作:
1. 选择项目->属性->配置类型: 静态库(.lib) 2. 选择项目->属性->目标扩展名: .lib
是否可以同时构建两者?
3个回答

5

是的,您可以拥有一个可用于.dll和.lib的单个项目。

需要遵循以下步骤:

  1. Visual Studio将为您提供Debug和Release解决方案配置。创建自定义配置以用于lib和dll(即lib-release、dll-release)。
  2. 对于每个配置设置不同的项目类型并设置导出符号。例如,对于lib-release,请定义LIB_CONFIG并不对dll-release进行设置。
  3. 在代码文件中使用LIB_CONFIG与#IFDEF包含/排除项目类型特定代码。如果部分代码是库特定的,请将其添加到#ifdef LIB_CONFIG... #endif中,如果它是dll特定的,请将其添加到#ifndef LIB_CONFIG... #endif中。
  4. 更改活动解决方案配置后编译项目。例如,如果您想要.lib文件,则更改为lib-release。

希望这能帮助您。请告诉我您的反馈意见。


1
在Visual Studio创建新项目时,请确保勾选“导出符号”。

我认为那不是一个答案。.lib文件可以是导入库或静态库。 - manuell
真的吗?所以你的构建会生成两个库文件?你是怎么做到的? - manuell
它创建了name.lib和name.dll,而不是两个libs...我认为这就是OP的问题所在。如何同时创建dll和lib。 :) - Digital_Reality

1
不行。您必须在解决方案中拥有两个项目(使用相同的源文件)。不要忘记为您的2个.lib文件命名不同的名称。
编辑:使用一些技巧来避免在静态库中包含DllMain函数(可以使用一些#ifdef,或者一个未添加到静态项目中的单独文件)。

我无法获取lib概念下的不同名称? - Digital_Reality
@Digital_Reality 一个导入库,一个静态库。如果它们都在解决方案目录中构建,则最好它们具有两个不同的名称(如果您想知道要使用哪个库,这是强制性的...)。 - manuell

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