我有一个C / C ++ Visual Studio 2013社区版项目,该项目被定义为生成DLL,并且我对"未定义的符号"有很多痛苦。我想在另一个项目中使用它,所以我决定看看如果我改变了项目设置会给它带来什么,这样它就会生成一个静态库。
所以在项目的属性窗口中我去了
配置属性>一般>项目默认值>配置类型
并将配置类型设置为静态库 目标扩展名为 .lib 。
当我进行重建时,仍然在我的Release文件夹中获取一个新的dll文件,以及一个lib,并且DLL文件比lib文件大得多。这使得lib文件看起来像" export lib"文件,看起来没有任何改变。 如果我停止并重新启动Visual Studio,这仍然会发生。
我是否遗漏了某些内容,或者这看起来像是一个错误?
答案 0 :(得分:1)
在Configuration Properties - C/C++ - Runtime Library
将Multi-threaded (/MT)
更改为Release
配置,将{strong> Multi-threaded Debug (/MTd)
更改为Debug
配置。
此外,检查Configuration Properties - General - General - Target extension
设置为 .lib
。
检查所有配置的设置(Release
和Debug
,如果您使用它们)。
答案 1 :(得分:0)
为什么要更改项目类型?如果需要DLL,请构建DLL。发布DLL编译期间收到的确切错误。也许你错过了一些dllexport
/ dllimport
declspecs。
关于.lib
:您确定,在构建期间生成了该DLL吗?也许它是以前(DLL)配置的输出?您是否尝试使用此.lib
编译测试应用?也许它是有效的并且编译得恰到好处?
另一个问题:您是否在项目类型更改后从功能签名中删除了所有dclspec?构建静态库时,它们都不适用。