C++ 库已正确生成,但没有.lib文件

C++ 库已正确生成,但没有.lib文件,c++,visual-studio,cmake,C++,Visual Studio,Cmake,我正在使用cmake构建一个cpp库。x86_64 我想要一个共享库,所以我使用共享库,一切都很好,没有任何错误,但它只是创建dll文件。我还使用了uu declspec(dllexport),所以应该有一个 稍后,我想将lib与我的测试程序链接,但总是会出现错误致命错误LNK1181:无法打开输入文件“..\lib\Release\MQTTClient.lib” 因为vs没有创建任何库文件 有人有想法吗?您可以使用CMake标志: CMAKE_WINDOWS_EXPORT_ALL_SYMBOL

我正在使用cmake构建一个cpp库。x86_64 我想要一个共享库,所以我使用共享库,一切都很好,没有任何错误,但它只是创建dll文件。我还使用了uu declspec(dllexport),所以应该有一个

稍后,我想将lib与我的测试程序链接,但总是会出现错误致命错误LNK1181:无法打开输入文件“..\lib\Release\MQTTClient.lib”

因为vs没有创建任何库文件


有人有想法吗?

您可以使用CMake标志:

CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=True
它应该导出一个.lib文件,其中包含每个函数符号

更多细节见官方

此标志非常有用,尤其是当您必须与第三方打交道时,您需要在构建Windows时将此标志传递给CMake

但最好显式标记要使用_declspec(dllexport)导出的函数。 我真的不知道你做错了什么


(评论变成了回答)

通常这意味着你没有导出任何符号,但你说你在使用
dllexport
。编辑您的问题以显示如何使用它的示例。如果不传递导出标志,Visual Studio将不会导出符号,因此不会创建库。作为测试,您可以使用CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=True导出一个.lib。请参见第一个选项,传递导出标志是最好的(如果不精确,默认行为是dllimport)。thx,CMAKE标志是solution@Noki请考虑把你的评论转移到答案中去,所以mojado可以接受它,并标记此问题已解决。@Stanley将尽快完成