Avatar billede kernelx Juniormester
28. oktober 2005 - 09:17 Der er 12 kommentarer og
1 løsning

cpp - Modul-programmering

Hi,

jeg har tre filer:
------------------

main.cpp
--------
#include "modul1.h"

int main(int argc, char *argv[])
{
    oooo ();
}

---------
---------
main2.cpp
---------
#include <iostream>
#include "modul1.h"

void oooo (void)
{
    cout << "test";
}

--------
--------
modul1.h
--------
void oooo (void);

--------

nu vil jeg bruge main2.cpp som modul. hvis main2.cpp bliver compileret, skal filen hedde "testmodul.so"

bagefter vil jeg compilere main.cpp, som skal bruges som programm. Filen skal så hedde "testprogram".

hvis jeg nu starter ./testprogram, så skal programmet bruge testmodul.so som hjælp.


Mit problem er, jeg har glemt - hvordan jeg skal compilere det sådan, at det bliver 2 fil (og ikke kun en). Det kan også godt være, at man så skal skrive filerne på en lidt anden måde.

er der en som kan hjælpe?


med venlig hilsen
KernelX
Avatar billede kernelx Juniormester
28. oktober 2005 - 09:41 #1
jeg compilerer med "g++" (hvis man bruger denne information til et svar)  :-)
Avatar billede arne_v Ekspert
28. oktober 2005 - 09:43 #2
g++ -shared main2.cpp -o testmodul.so

tror jeg
Avatar billede kernelx Juniormester
28. oktober 2005 - 09:54 #3
ok, så kommer det her:
/usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.6/../../../../i686-pc-linux-gnu/bin/ld: warning: creating a DT_TEXTREL in object.
---
er det i orden? hvis jeg husker rigtigt, så er warnings ikke så farlig, som en error :-)

hvordan får jeg så den passende fil "testprogram"? bare sådan, som man compilerer en normal cpp fil?
Avatar billede arne_v Ekspert
28. oktober 2005 - 09:55 #4
warnings kan være OK

jeg kender ikke den der
Avatar billede arne_v Ekspert
28. oktober 2005 - 09:56 #5
jeg har kun brugt .so i forbindelse med load at runtime så det bliuver et gæt:

g++ main.cpp testmodul.so -o testprogram
Avatar billede kernelx Juniormester
28. oktober 2005 - 09:59 #6
./testprogram: error while loading shared libraries: testmodul.so: cannot open shared object file: No such file or directory

in til nu ligger alle filer i den samme directory. skal jeg først kopere testmodul.so i en special-mappe?
Avatar billede arne_v Ekspert
28. oktober 2005 - 10:03 #7
tilføj dit dir til LD_LIBRARY_PATH
Avatar billede kernelx Juniormester
28. oktober 2005 - 10:15 #8
hvordan? jeg har lavet det her i linux:
LD_LIBRARY_PATH="/tmp/cpp/test"
./testprogram

så kommer det her igen:
./testprogram: error while loading shared libraries: testmodul.so: cannot open shared object file: No such file or directory
Avatar billede arne_v Ekspert
28. oktober 2005 - 10:19 #9
prøv:

export LD_LIBRARY_PATH="/tmp/cpp/test:$LD_LIBRARY_PATH"
Avatar billede kernelx Juniormester
28. oktober 2005 - 10:24 #10
ja, det virker, mange mange tak!

husk at skrive et svar.
Avatar billede arne_v Ekspert
28. oktober 2005 - 10:42 #11
kommer her
Avatar billede sacer Nybegynder
29. oktober 2005 - 08:42 #12
Undskyld, men var det muligt om at få et link eller noget til, hvor man kan være om module programmering?
Avatar billede arne_v Ekspert
29. oktober 2005 - 22:59 #13
mener du at have koden i flere .cpp filer ?

eller mener du at bruge .so'er ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester