Forum Programmation.c DLL Dynamic Lybraries Lier plusieur .o

Posté par  .
Étiquettes : aucune
0
27
juil.
2004
Ola,

j'arrive à creer une dll à partir d'un fichier .c
gcc ... -shared .....

Maintenant ce que je veu c est inclure un projet externe(en fait recuperer les .o) dans ma dll.

Le prob c est que j arrive a creer cette dll, mais elle ne contient pas le projet externe

Ai je été assez clair??
j utilise mingw (minimal gnu 4 windows)

Enjoy
JuJuZ ....
  • # Ai je été assez clair??

    Posté par  (site web personnel) . Évalué à 2.

    euh absolument pas du tout.
  • # .o

    Posté par  (site web personnel) . Évalué à 1.

    meme ligne de compil que pour le .c mais sans -c s'il y en a.
    • [^] # Re: .o

      Posté par  . Évalué à 1.

      qd je fai ca il crée bien la library mais apperment y a rien dedans(qd je le fai fichier par fichier ca marche mais a partir des .c, le prob c est que je ne dispose que des .o et apperment on ne peu pas inclure de .o dans une library si il n ont pas ete compiler avec l option shared

      ...
      Ju
  • # impossible ?

    Posté par  (site web personnel) . Évalué à 2.

    je pense que tu ne peux pas extraire les objets d'un shared object. un shared object ne contient que le code et les symboles, pas la "frontière" entre les objets dont ils proviennent.

    [gc@meuh /tmp] touch citron.c banane.c
    [gc@meuh /tmp] gcc -shared citron.c banane.c -o libfruits.so
    [gc@meuh /tmp] strings libfruits.so | grep banane
    [gc@meuh /tmp]

    maintenant, on devrait pouvoir théoriquement ajouter un objet à un shared object existant mais je trouve pas comment faire...
    • [^] # Re: impossible ?

      Posté par  . Évalué à 1.

      yes j ai bien l impression que t as raison le prob c est que pour inclure des obj dans une dll faut qu ils soient compiler au prealable avec l option shared
      Fais chier parcequ il me manque les sources sur certains algo

      allez merci bcp d avoir confirmer mes idée j avai pas envi que ca soit vrai

      ciao ciao
      & Enjoy
      JuJuZ
      • [^] # Makefile

        Posté par  . Évalué à 1.

        ROOT := ..
        RM := rm -rf

        # Each subdirectory must contribute its source files here
        C_SRCS :=
        CC_SRCS :=
        CXX_SRCS :=
        CAPC_SRCS :=
        CPP_SRCS :=

        CFLAGS := \
        -O3 \
        -Wl,--add-stdcall-alias \
        -shared \
        -Wall

        LIBS := \
        -lgslcblas\
        -lgsl\
        #-lpng\
        #-lgd\
        #-lmsl\


        INCLUDES := \
        -I../include\
        -I"C:\gnuwin32\include" \
        -I../moulon.inra.fr.msl/src \
        -I"I:\julien\eclipse\workspace\org.thalia.qtl.metaAnalysis\bin\org\thalia\qtl\metaAnalysis\jni" \
        -I"C:\j2sdk1.4.2_04\include\win32" \
        -I"C:\j2sdk1.4.2_04\include"

        LIBDS := \
        -L"C:\gnuwin32\lib"

        USER_OBJS :=

        FILES := org_thalia_qtl_metaAnalysis_jni_LaunchMetaAnalysis.c \


        OBJS = ../moulon.inra.fr.msl/Release/src/*.o \
        ../moulon.inra.fr.metamec/bin/src/*.o


        all: libmetamec


        %.o : %.c
        gcc $(INCLUDES) $(CFLAGS) -c $<

        libmetamec: org_thalia_qtl_metaAnalysis_jni_LaunchMetaAnalysis.c
        #gcc $(LIBDS) -Wl,--add-stdcall-alias -o libmetamec.dll $(OBJS) $(LIBS)
        gcc $(INCLUDES) $(OBJS) $(CFLAGS) -o libmetamec.dll $(FILES)

        clean:
        -$(RM) $(OBJS)

        .PHONY: all clean
        • [^] # Re: Makefile

          Posté par  . Évalué à 1.

          Donc voila peut etre en plus clair, je veu lier tous les OBJ venant de metamec et msl(cf makefile ) a org_thalia_qtl_metaAnalysis_jni_LaunchMetaAnalysis.c sachant que les objets n ont pas ete compiler avec l option shared !!

          oila

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.