Hallo, ich beschäftige mich gerade mit dem laden von .so Files unter Linux in C/C++....
nun habe ich folgendes Beispiel gefunden.
wenn es das Programm in eine .c Datei speichere und dann folgendes mache
kann ich das Programm foo aufrufen und es funktioniert...
nun wollte ich das alles jedoch nicht in C sondern in Kdevelop mit C++ schreiben.
1. was muss ich am Quellcode ändern, damit es läuft...
weil wenn ich nur Copy/Paste mache dann kommen folgende Fehler/Warnungen beim kompilieren....
2. welche Compileroptionen muss ich für C++ angeben...
also wenn ich es dann als Cpp Datei habe , was muss ich als Parameter an g++ anhängen damit er mir das sauber durchcompiliert?
3. Welche Optionen wären in Kdevelop noch anzuzugeben beim Compiler? und wo genau CxxFlags CppFlags?
mfg
UFOSWORLD
nun habe ich folgendes Beispiel gefunden.
Code:
#include <stdio.h>
#include <dlfcn.h>
int main(int argc, char **argv) {
void *handle;
double (*cosine)(double);
char *error;
handle = dlopen ("libm.so", RTLD_LAZY);
if (!handle) {
fprintf (stderr, "%s\n", dlerror());
exit(1);
}
cosine = dlsym(handle, "cos");
if ((error = dlerror()) != NULL) {
fprintf (stderr, "%s\n", error);
exit(1);
}
printf ("%f\n", (*cosine)(2.0));
dlclose(handle);
return 0;
}
wenn es das Programm in eine .c Datei speichere und dann folgendes mache
Code:
gcc -rdynamic -o foo foo.c -ldl
kann ich das Programm foo aufrufen und es funktioniert...
nun wollte ich das alles jedoch nicht in C sondern in Kdevelop mit C++ schreiben.
1. was muss ich am Quellcode ändern, damit es läuft...
weil wenn ich nur Copy/Paste mache dann kommen folgende Fehler/Warnungen beim kompilieren....
Code:
in.cpp' || echo './'`main.cpp
main.cpp: In function `int main(int, char**)':
main.cpp:46: warning: invalid conversion from `void*' to `double (*)(double)'
main.cpp:35: warning: unused parameter `int argc'
main.cpp:35: warning: unused parameter `char**argv'
main.o: In function `main':
/usr/usr/ready/ben/sofiles/sofiles/main.cpp:40: undefined reference to `dlopen'
/usr/usr/ready/ben/sofiles/sofiles/main.cpp:42: undefined reference to `dlerror'
/usr/usr/ready/ben/sofiles/sofiles/main.cpp:46: undefined reference to `dlsym'
/usr/usr/ready/ben/sofiles/sofiles/main.cpp:47: undefined reference to `dlerror'
/usr/usr/ready/ben/sofiles/sofiles/main.cpp:53: undefined reference to `dlclose'
collect2: ld returned 1 exit status
2. welche Compileroptionen muss ich für C++ angeben...
also wenn ich es dann als Cpp Datei habe , was muss ich als Parameter an g++ anhängen damit er mir das sauber durchcompiliert?
3. Welche Optionen wären in Kdevelop noch anzuzugeben beim Compiler? und wo genau CxxFlags CppFlags?
mfg
UFOSWORLD