有没有一种方法可以在不指定C / C++运行时版本的情况下构建静态库?
我正在使用Visual Studio 2017生成静态库,并且必须在“代码生成”选项页(\ MD或\ MT)中为“运行时库”指定一个版本。如果我选择一个版本,而使用我的库的应用程序选择了另一个版本,Visual Studio将吐出错误:mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MT_StaticRelease'
。
我知道,在构建EXE时,我可以使用链接器开关\ NODEFAULTLIB不包括C / C++运行时,但是我在这里构建一个静态库,它的“属性”窗口中甚至没有链接器选项页。
看来Simple DirectMedia Layer找到了一种方法。
更新:后来我意识到,我实际上可以在静态库的“属性”窗口中的“图书管理员”选项页中打开\ NODEFAULTLIB开关。
最佳答案
您可以通过不使用任何运行库来实现。如果您不使用任何运行时库,则“代码生成”选项将毫无意义,因为运行时存根不会被拉入obj文件。
SDL在该网站上基本上是这样说的:
一旦使用Microsoft VS提供的任何系统包含,您就在使用运行时库。
因此,如果仅使用Windows SDK和Win32 API提供的API,则不需要VC运行时。
关于c++ - 在Visual Studio中构建没有C/C++运行时的静态库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52373933/