【问题标题】:MinGW gtk undefined referenceMinGW gtk 未定义参考
【发布时间】:2013-10-30 11:57:56
【问题描述】:

我目前需要为 Windows 编译 GTK+ 应用程序。我的 makefile 看起来像这样:

CC=g++
CFLAGS=-c -m32 -O0 -Wall -Wextra -Werror `pkg-config.exe --cflags --libs gtk+-2.0`
LDFLAGS=-m32 `pkg-config.exe --cflags --libs gtk+-2.0`
SOURCES=$(wildcard src/*.cpp)
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=screenplay

all: $(SOURCES) $(EXECUTABLE)

$(EXECUTABLE): $(OBJECTS)
        $(CC) $(LDFLAGS) $(OBJECTS) -o $@

.cpp.o:
        $(CC) $(CFLAGS) $< -o $@

pkg-config.exe 应该在哪里给我正确的 -I 和 -L 参数(例如包含文件和库文件所在的路径)。它实际上给了他们并不奇怪 - 输出是:

-mms-bitfields -IC:/MinGW/include/gtk-2.0 -IC:/MinGW/lib/gtk-2.0/include -IC:/MinGW/include/atk-1.0 -IC:/MinGW/include/cairo -IC:/MinGW/include/gdk-pixbuf-2.0 -IC:/MinGW/include/pango-1.0 -IC:/MinGW/include/glib-2.0 -IC:/MinGW/lib/glib-2.0/include -IC:/MinGW/include -IC:/MinGW/include/freetype2 -IC:/MinGW/include/libpng14  -LC:/MinGW/lib -lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0 -lgio-2.0 -lpangowin32-1.0 -lgdi32 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lglib-2.0 -lintl  

我可以确认该位置 (C:/MinGW/lib/) 中存在库,但我收到未定义的引用错误。有什么想法吗?

【问题讨论】:

  • 您自己写Makefile 有充分的理由吗? CMake 不合适了吗?
  • 粘贴生成的编译命令行和您遇到的实际错误可能有助于解决您的问题。
  • 经典调用make - 编译成功,链接问题。基本上我称之为:g++ -m32 pkg-config.exe --cflags --libs gtk+-2.0 ALL_OBJECTS -o EXECUTABLE_NAMEz 我收到了对 gtk_main(以及其他少数几个)的未定义引用,就像我什至不会在链接步骤链接库一样。

标签: c++ linker makefile gtk mingw


【解决方案1】:

您是否检查过 gtk 库的实际安装位​​置?您的库路径似乎只有-LC:/MinGW/lib,您确定所有库都在那里吗?顺便说一句,我认为您只需将--cflags 传递给pkg-config 以设置CFLAGS--libs 以设置LDFLAGS 您不需要两者。

【讨论】:

    猜你喜欢
    • 2023-03-13
    • 2019-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-16
    • 2013-04-30
    • 1970-01-01
    相关资源
    最近更新 更多