Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    2

    ImageMagick DevC++ [linker error]

    Ho un problema nell'utilizzare un semplice programma in C che fa uso delle librerie ImageMagick usando il DevC++ ed il Glade per Windows (Gkk)
    Dopo aver installato le librerie ImageMagick-6.3.2-9-Q8-windows-dll.exe nel mio Windows2000, nel sorgente ho inserito l'include:

    #include <gtk/gtk.h>

    #include <magick/MagickCore.h>
    #include <wand/MagickWand.h>
    ......
    .....

    MagickWandGenesis();
    InitializeMagick((gchar *)NULL);

    mentre nelle opzioni di compilazione ho inserito i due percorsi per le librerie statiche:

    C:\Programmi\ImageMagick-6.3.2-Q8\lib
    C:\Programmi\ImageMagick-6.3.2-Q8\include

    A questo punto ho inserito sul sorgente C un paio di funzioni che fanno uso di queste librerie per fare un test,
    quindi ho lanciato la compilazione.
    L'errore generato e nel linkaggio degli oggetti:

    [Linker error] undefined reference to `InitializeMagick'
    [Linker error] undefined reference to `MagickWandGenesis'
    ld returned 1 exit status
    C:\Gtk_doc\Projects\project1\devcpp\Makefile.win [Build Error] [project1.exe] Error 1

    Controllando il Makefile.win generato automaticamente dal DevC++ non mi sembra di riscontrare dei problemi:

    --------------------------------------------------------------------------

    # Project: project1
    # Makefile created by Dev-C++ 4.9.9.2

    CPP = g++.exe
    CC = gcc.exe
    WINDRES = windres.exe
    RES =
    OBJ = ../src/main.o ../src/callbacks.o ../src/interface.o ../src/support.o ../src/logics.o $(RES)
    LINKOBJ = ../src/main.o ../src/callbacks.o ../src/interface.o ../src/support.o ../src/logics.o $(RES)
    LIBS = -L"C:/Dev-Cpp/lib" -L"C:/Programmi/ImageMagick-6.3.2-Q8/lib" -mwindows -L"$(GTK_BASEPATH)/lib" -lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lpangowin32-1.0 -lgdi32 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lintl -liconv
    INCS = -I"C:/Dev-Cpp/include" -I"C:/Programmi/ImageMagick-6.3.2-Q8/include" -I"."
    CXXINCS = -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include" -I"C:/Dev-Cpp/include/c++/3.4.2/backward" -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32" -I"C:/Dev-Cpp/include/c++/3.4.2" -I"C:/Dev-Cpp/include" -I"."
    BIN = project1.exe
    CXXFLAGS = $(CXXINCS) -mms-bitfields -mwindows -DHAVE_CONFIG_H -I"$(GTK_BASEPATH)/include/gtk-2.0" -I"$(GTK_BASEPATH)/lib/gtk-2.0/include" -I"$(GTK_BASEPATH)/include/atk-1.0" -I"$(GTK_BASEPATH)/include/pango-1.0" -I"$(GTK_BASEPATH)/include/glib-2.0" -I"$(GTK_BASEPATH)/lib/glib-2.0/include" -I"$(GTK_BASEPATH)/include/cairo" -I"$(GTK_BASEPATH)/include" -DPACKAGE_PREFIX=\"\" -DPACKAGE_DATA_DIR=\"\" -DPACKAGE_LOCALE_DIR=\"\"
    CFLAGS = $(INCS) -mms-bitfields -mwindows -DHAVE_CONFIG_H -I"$(GTK_BASEPATH)/include/gtk-2.0" -I"$(GTK_BASEPATH)/lib/gtk-2.0/include" -I"$(GTK_BASEPATH)/include/atk-1.0" -I"$(GTK_BASEPATH)/include/pango-1.0" -I"$(GTK_BASEPATH)/include/glib-2.0" -I"$(GTK_BASEPATH)/lib/glib-2.0/include" -I"$(GTK_BASEPATH)/include/cairo" -I"$(GTK_BASEPATH)/include" -DPACKAGE_PREFIX=\"\" -DPACKAGE_DATA_DIR=\"\" -DPACKAGE_LOCALE_DIR=\"\"
    RM = rm -f

    .PHONY: all all-before all-after clean clean-custom

    all: all-before project1.exe all-after


    clean: clean-custom
    ${RM} $(OBJ) $(BIN)

    $(BIN): $(OBJ)
    $(CC) $(LINKOBJ) -o "project1.exe" $(LIBS)

    ../src/main.o: ../src/main.c
    $(CC) -c ../src/main.c -o ../src/main.o $(CFLAGS)

    ../src/callbacks.o: ../src/callbacks.c
    $(CC) -c ../src/callbacks.c -o ../src/callbacks.o $(CFLAGS)

    ../src/interface.o: ../src/interface.c
    $(CC) -c ../src/interface.c -o ../src/interface.o $(CFLAGS)

    ../src/support.o: ../src/support.c
    $(CC) -c ../src/support.c -o ../src/support.o $(CFLAGS)

    ../src/logics.o: ../src/logics.c
    $(CC) -c ../src/logics.c -o ../src/logics.o $(CFLAGS)


    ---------------------------------------------------------------------------------------------------

    Qualcuno mi sa aiutare e dirmi dove sto sbagliando?
    Grazie in anticipo.

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    2
    Mi è stata suggerita una soluzione che si è rivelata efficace:
    è bastato aggiungere alla linea di comando del linker:


    -lCORE_RL_wand_ -lCORE_RL_magick_ (senza estensioni)


    che si riferiscono alle librerie:


    CORE_RL_wand_.lib
    CORE_RL_magick_.lib


    e tutto funziona.
    Grazie a tutti.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.