C++ 静态库的cpp中的pragma是否由该库使用';s用户?

C++ 静态库的cpp中的pragma是否由该库使用';s用户?,c++,visual-studio,C++,Visual Studio,经过一些测试后,我觉得即使将它们放在cpp中,库用户也会使用它们,但我不确定我是否做错了什么 在Visual Studio中,我有一个静态库StaticLib.lib和StaticLib.cpp。在该文件中,我有以下代码: #pragma comment(lib, "random.lib") 在编译StaticLib.lib时,我没有收到任何错误消息,说明找不到random.lib,但在使用MyProgram.exe链接StaticLib.lib时,我得到 LNK1104

经过一些测试后,我觉得即使将它们放在cpp中,库用户也会使用它们,但我不确定我是否做错了什么

在Visual Studio中,我有一个静态库StaticLib.lib和StaticLib.cpp。在该文件中,我有以下代码:

#pragma comment(lib, "random.lib")
在编译StaticLib.lib时,我没有收到任何错误消息,说明找不到random.lib,但在使用MyProgram.exe链接StaticLib.lib时,我得到

LNK1104 cannot open file 'random.lib'
在Visual Studio 2019中


这是正常的行为吗?最初我认为您需要将pragma放在一个头中,并让您的用户(MyProgram.exe)包含该头,以便强制链接到特定的库('random.lib')。

严格来说,
#pragma
由编译器在编译
StaticLib.cpp
文件时进行处理

根据,其结果是:

解放党

在对象文件中放置库搜索记录

链接器在构建
MyProgram.exe

时使用的,这是正常行为吗?我想是的。这些pragma由链接器解释,并且只有在链接.exe时才会运行。