背景:在visual studio 2015中,我有一个项目A
作为应用程序构建。我想创建两个包B
和C
,它们将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()
,我不想再拥有它。
那么,如何更改项目类型以便将其编译为静态库?
答案 0 :(得分:0)
似乎无法从GUI更改构建类型。
但是,这可以通过更改文件A.vcxproj
来完成。
搜索所有代码<ConfigurationType>
并将其从Application
(或您拥有的任何内容)更改为StaticLibrary
。
这只需要为项目A
完成 - 下次在Visual Studio中启动时,解决方案将适应。
要将A
正确关联到B
和C
,请不要忘记:
1)将B
和C
的引用添加到A
。
打开Solution>Project B/C>References
,选择Add Reference
,添加对A
的引用。
2)将项目依赖项从B
和C
添加到A
。
打开任何项目的上下文菜单,然后选择Build Dependencies...>Project Dependencies>Dependencies
。添加A
作为B
和C
的依赖项。
答案 1 :(得分:0)
在Visual Studio 2017中,您可以使用项目属性来更改配置类型。
打开项目,然后转到“项目/属性”。 在“配置属性/常规/项目默认值”下,有一个名为“配置类型”的条目。我看到的选择是静态库(.lib),动态库(.dll),应用程序(.exe),Makefile和实用程序。
我的项目作为动态库导入。我更新了此设置,现在它会生成静态库。与其他答案相关,在Visual Studio中更改此设置确实会导致project.vcxproj文件中的值被更新。我认为通过Visual Studio而不是直接在文件上进行操作会更安全。