如何将解决方案中的项目从应用程序更改为静态库?

时间:2017-01-05 14:00:37

标签: c++ visual-studio-2015

背景:在visual studio 2015中,我有一个项目A作为应用程序构建。我想创建两个包BC,它们将A的内容包装到DLL(B)中,并包含在C中的可运行应用程序中。从main中删除A后,我想将项目A从应用程序更改为静态库。 我试过改变

Project Properties|Configuration Properties|General|Project Defaults

Application (.exe)Static Library (.lib)。这会导致链接器错误:

LINK : fatal error LNK1561: entry point must be defined

显然,Visual Studio仍然认为该子项目必须像应用程序一样进行编译(参见here)。因此,我希望有一个int main(),我不想再拥有它。

那么,如何更改项目类型以便将其编译为静态库?

2 个答案:

答案 0 :(得分:0)

似乎无法从GUI更改构建类型。 但是,这可以通过更改文件A.vcxproj来完成。

搜索所有代码<ConfigurationType>并将其从Application(或您拥有的任何内容)更改为StaticLibrary。 这只需要为项目A完成 - 下次在Visual Studio中启动时,解决方案将适应。

要将A正确关联到BC,请不要忘记:

1)将BC的引用添加到A

打开Solution>Project B/C>References,选择Add Reference,添加对A的引用。

2)将项目依赖项从BC添加到A

打开任何项目的上下文菜单,然后选择Build Dependencies...>Project Dependencies>Dependencies。添加A作为BC的依赖项。

答案 1 :(得分:0)

在Visual Studio 2017中,您可以使用项目属性来更改配置类型。

打开项目,然后转到“项目/属性”。 在“配置属性/常规/项目默认值”下,有一个名为“配置类型”的条目。我看到的选择是静态库(.lib),动态库(.dll),应用程序(.exe),Makefile和实用程序。

我的项目作为动态库导入。我更新了此设置,现在它会生成静态库。与其他答案相关,在Visual Studio中更改此设置确实会导致project.vcxproj文件中的值被更新。我认为通过Visual Studio而不是直接在文件上进行操作会更安全。