链接 google benchmark lib 时出现 LNK2001 链接器错误

Fly*_*ish 2 c++ linker lnk2001 google-benchmark

我在项目中链接 benchmark.lib 时遇到问题。我已经按照此处所述构建了它。我有 sln 文件,编译它(在发布模式下),然后创建我自己的 VS 项目。链接器可以找到我的库,但它无论如何都不会链接它(LNK2001)。我添加了所需头文件的路径、其他库目录中的 lib 路径以及其他依赖项中的库名称,但它仍然不起作用。我尝试在发布模式下编译它。\n我的文件树:

\n

我的项目中的文件

\n

项目属性(链接器):\n额外的依赖项

\n

附加库目录

\n

日志:

\n
1>mybenchmark.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual __cdecl benchmark::internal::FunctionBenchmark::~FunctionBenchmark(void)" (__imp_??1FunctionBenchmark@internal@benchmark@@UEAA@XZ)\n1>mybenchmark.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __cdecl benchmark::internal::FunctionBenchmark::FunctionBenchmark(char const *,void (__cdecl*)(class benchmark::State &))" (__imp_??0FunctionBenchmark@internal@benchmark@@QEAA@PEBDP6AXAEAVState@2@@Z@Z)\n1>mybenchmark.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: struct benchmark::State::StateIterator __cdecl benchmark::State::end(void)" (__imp_?end@State@benchmark@@QEAA?AUStateIterator@12@XZ)\n1>mybenchmark.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: struct benchmark::State::StateIterator __cdecl benchmark::State::begin(void)" (__imp_?begin@State@benchmark@@QEAA?AUStateIterator@12@XZ)\n1>C:\\Users\\Pawe\xc5\x82\\source\\repos\\benchmarkTest\\x64\\Release\\benchmarkTest.exe : fatal error LNK1120: 4 unresolved externals\n
Run Code Online (Sandbox Code Playgroud)\n

我的源文件包含一些示例性基准(也来自之前链接的 github 存储库):

\n
1>mybenchmark.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual __cdecl benchmark::internal::FunctionBenchmark::~FunctionBenchmark(void)" (__imp_??1FunctionBenchmark@internal@benchmark@@UEAA@XZ)\n1>mybenchmark.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __cdecl benchmark::internal::FunctionBenchmark::FunctionBenchmark(char const *,void (__cdecl*)(class benchmark::State &))" (__imp_??0FunctionBenchmark@internal@benchmark@@QEAA@PEBDP6AXAEAVState@2@@Z@Z)\n1>mybenchmark.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: struct benchmark::State::StateIterator __cdecl benchmark::State::end(void)" (__imp_?end@State@benchmark@@QEAA?AUStateIterator@12@XZ)\n1>mybenchmark.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: struct benchmark::State::StateIterator __cdecl benchmark::State::begin(void)" (__imp_?begin@State@benchmark@@QEAA?AUStateIterator@12@XZ)\n1>C:\\Users\\Pawe\xc5\x82\\source\\repos\\benchmarkTest\\x64\\Release\\benchmarkTest.exe : fatal error LNK1120: 4 unresolved externals\n
Run Code Online (Sandbox Code Playgroud)\n

预先感谢您的回答。

\n

小智 8

这有点晚了,但当我尝试在 Visual Studio 中使用谷歌基准测试时,我也遇到了这个问题。

我要做的就是在“属性”->“C/C++”->“预处理器”->“预处理器定义”中设置 BENCHMARK_STATIC_DEFINE。

预处理器属性屏幕截图

希望这对你有用