C Library in C++ Programm verwenden
-
Hallo zusammen,
ich habe ein C++ Programm geschrieben in dem ich nun auch ein Problem der linearen Optimierung lösen muss. Dafür möchte ich das GNU Linear Programming Kit (GLPK) verwenden. Dies bietet zwar ein API, aber leider nur für C. Wenn ich das Standardbeispiel mit gcc kompiliere und linke gibt es kein Problem:
/* sample.c */ // Compile with: gcc sample.c /usr/lib/libglpk.a #include <stdio.h> #include <stdlib.h> #include "glpk.h" int main(void) { LPX* lp; lp = lpx_create_prob(); // ... return 0; }Wenn ich aber g++ verwende, bekomme ich einen Linkerfehler:
/tmp/cccrUmum.o: In function `main': sample.c:(.text+0x12): undefined reference to `glp_lpx_create_prob()' sample.c:(.text+0x28): undefined reference to `glp_lpx_set_prob_name(LPX*, char*)' sample.c:(.text+0x3b): undefined reference to `glp_lpx_set_obj_dir(LPX*, int)' collect2: ld returned 1 exit statusWie kann ich GLPK trotzdem in meinem C++ Programm verwenden?
Dank Euch!!
Sun
-
Probiers mal mit
extern "C" { #include "glpk.h" }Aber eigentlich werden die entsprechenden „Wächter“ heute fast überall von den Entwicklern der Bibliotheken eingebaut.
-
hast du auch gegen den glpk gelinkt?
also: g++ main.c -lglpk
-
ghorst schrieb:
hast du auch gegen den glpk gelinkt?
also: g++ main.c -lglpkDann hätte die Fehlermeldung von _glp_lpx_set_obj_dir gesprochen, ohne Parametertypen oder solches Zeugs (da C-Funktionen diese nicht haben muss man ja gerade extern "C" schreiben).
-
nicht wirklich, da der compiler danke header weiß, was ihm fehlt...
-
ghorst schrieb:
nicht wirklich, da der compiler danke header weiß, was ihm fehlt...
Aber der Linker nicht

-
Ja! Mit extern tut's!
Dank Euch ganz herzlich!