首页 > 解决方案 > 无法编译/链接到不同的库

问题描述

我正在开发一个需要与 Gdi32 和 JsonCpp 库交互的应用程序。为了简单起见,我将相关的相关代码段放在 2 个单独的文件中,并将它们单独编译为二进制文件。编译的两个应用程序都运行正常。

我使用以下命令进行编译:

JsonCpp:

g++ -I/mingw64/include/json -L/mingw64/bin -llibjsoncpp-24 my_json.cpp -o my_json.exe -O3

Gdi32:

g++ my_app.cpp -o my_app.exe -lGDI32 -O3

后来我将这两个文件中的代码合并到一个文件中,并尝试使用以下命令进行编译:

g++ -I/mingw64/include/json -L/mingw64/bin -llibjsoncpp-24 -lGDI32 combined.cpp -o combined.exe -O3

这会导致以下编译器/链接器错误:

C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\msys64\tmp\ccOLYQ4n.o:combined.cpp:(.text+0x458): undefined reference to `__imp_GetStockObject' collect2.exe: error: ld returned 1 exit status

谁能告诉我如何解决这个问题?

我在 Window 8 PC 上,使用 msys2 (mingw64) g++ ver 10.2.0。

标签: c++

解决方案


推荐阅读