Fly*_*ish 2 c++ linker lnk2001 google-benchmark
我在项目中链接 benchmark.lib 时遇到问题。我已经按照此处所述构建了它。我有 sln 文件,编译它(在发布模式下),然后创建我自己的 VS 项目。链接器可以找到我的库,但它无论如何都不会链接它(LNK2001)。我添加了所需头文件的路径、其他库目录中的 lib 路径以及其他依赖项中的库名称,但它仍然不起作用。我尝试在发布模式下编译它。\n我的文件树:
\n\n\n\n日志:
\n1>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\nRun Code Online (Sandbox Code Playgroud)\n我的源文件包含一些示例性基准(也来自之前链接的 github 存储库):
\n1>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\nRun Code Online (Sandbox Code Playgroud)\n预先感谢您的回答。
\n小智 8
这有点晚了,但当我尝试在 Visual Studio 中使用谷歌基准测试时,我也遇到了这个问题。
我要做的就是在“属性”->“C/C++”->“预处理器”->“预处理器定义”中设置 BENCHMARK_STATIC_DEFINE。
希望这对你有用