我有许多本机C ++库(Win32,没有MFC)在Visual Studio 2005下编译,并用于许多解决方案。
我希望能够选择将它们作为静态库或DLL进行编译和链接,具体取决于我正在使用它们的特定解决方案的需求。
什么是最好的方法来做到这一点?我考虑过这些方法:
编辑:如果有人提出它,我也尝试了一个更“聪明”的#3版本,其中我定义了一个.vsprops,其中包含一个名为“ModuleConfigurationType”的UserMacro,其值为“2”(DLL)或“ 4“(静态库),并将.vcproj中的配置更改为具有ConfigurationType="$(ModuleConfigurationType)"
。Visual Studio以静默方式并且没有警告地移除该属性并将其替换ConfigurationType="1"
。非常有帮助!
我错过了更好的解决方案吗?
发布于 2018-05-29 10:23:06
有一种简单的方法可以在一个项目中创建静态和dll lib版本。
创建你的dll项目。然后执行以下操作:
只需创建一个运行lib工具的nmake makefile或.bat文件。基本上,这只是这个:
lib /NOLOGO /OUT:<your_lib_pathname> @<<
<list_all_of_your_obj_paths_here>
<<
然后,在你的项目中,添加一个Post Build Event,其中该命令仅运行.bat文件(或nmake或perl)。然后,你将永远得到一个DLL和一个静态库。我会避免诋毁visual studio,因为不允许该工具存在于Linker之前的项目中(在工具流程中)。
https://stackoverflow.com/questions/-100000124
复制相似问题