我有使用 Visual Studio 2008 编译的 C++/Windows 程序。该程序仅包含两个 .cpp 文件。我现在尝试使用 MinGW 编译和链接它。到目前为止,我已经成功编译了两个源文件,没有错误,但是现在当我用命令链接它们时......
g++ -o program.exe file1.o file2.o
Run Code Online (Sandbox Code Playgroud)
...我得到了许多“未定义的引用..”各种图形相关函数的实例,例如:
GetStockObject, SelectObject, MoveTo, LineTo, SetPixel, TextOut, BitBlt, CreatePen etc.
Run Code Online (Sandbox Code Playgroud)
我没有得到任何其他类型的 Windows 调用的未定义引用。显然我在链接器命令行中遗漏了一些东西,但无法弄清楚是什么。
由于这跨越了两个(相似的)先前答案,因此我将其添加为单独的答案,而不是作为对先前答案的重复评论。
更好的是,您应该首先添加“-mwindows”选项,而不是直接添加“-lgdi32”;这告诉 GCC 您正在构建一个 Windows 应用程序(其默认值是“控制台”应用程序类型),因此会导致它自动绑定许多附加图形设备接口特定库(其中之一是 gdi32.dll)。仅当添加此选项仍然无法解析所有符号时,您才需要担心可能需要哪些其他非默认库。