C++ Lib einbinden

Antworten
Kernel
Beiträge: 35
Registriert: Di 13. Okt 2009, 14:10

C++ Lib einbinden

Beitrag von Kernel »

Hallo,

ich möchte eine selbsgeschriebene C++ Lib unter Lazarus benutzen.
die Lib besteht nur aus einer Testfunktion

libtest.h

Code: Alles auswählen

#ifndef libtest_H
#define libtest_H
 
void Test();
 
#endif


libtest.cpp

Code: Alles auswählen

#include <stdio.h>
#include <stdlib.h>
 
#include <ablauf.h>
 
void Test()
{
  printf("Test\n");
}
#endif


(ohne Header hab ich auch schon getestet)

übersetzt wurde sie mit

Code: Alles auswählen

g++ -shared -o libtest.so test.cpp


unter Lazarus habe ich versucht Sie mit

Code: Alles auswählen

Procedure Test ; cdecl; external 'libtest.so';


einzubinden. Das scheint soweit zu funktionieren, das er die Lib findet.
Wenn ich allerdings die Prozedur Test irgendwo aufrufen will ,mecket der Linker "undefined reserence to 'test'".
Kann mir jemand sagen wo mein Fehler oder Verständnisproblem liegt?

Gruß
Kernel

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Re: C++ Lib einbinden

Beitrag von theo »

Lazarus/Delphi können nicht mit C++ Libs.
Du musst ein C Interface machen. ( extern "C" {} ).

ftp://ftp.freepascal.org/pub/fpc/docs-p ... Pascal.pdf

Kernel
Beiträge: 35
Registriert: Di 13. Okt 2009, 14:10

Re: C++ Lib einbinden

Beitrag von Kernel »

Danke! Ich wussten icht das es zwischen den Libs von C und C++ einen Unterschied gibt!
Aber mit dem Wrapperinterface klappt es.

Antworten