C++ mit Borland C++ 5.2 für 80186 Kern (DSTni)

Gast #1438605
Ich versuche auf Basis des DSTni-Prozessors eine C++ Umgebung zu 
etablieren und habe ein Linker-Problem.

Ich verwende den Borland C++ 5.2 und eigene LIBs für den verwendeten 
Prozessor (Lantronix XPort). Das CPK (das ist die Entwicklungsumgebung) 
ünterstützt keine dynaschische Speicherverwaltung. Könnte man ja selber 
schreiben...
Problem: Der Linker kann "new" und "delete" nicht aufgelösen, die ich 
mir in einem kleinen C-Modul hinzu-definiert habe. -> Siehe MAP-File <-

Im MAP-File finde ich "NEW" und "DELETE". Habe schon alle 
Compiler-Switches ausprobiert. Den Linker habe ich auf 
"nicht-case-sensitiv" gestellt. Kein Erfolg.
Hat jemand ne Idee für die Lösung meines Problems ?

Compilerflags:
CPP: -P -1 -d -O -Oc -Ol -Z -c -ms -a-
C  : -u- -1 -d -O -Oc -Ol -Z -c -ms -a-
Linkerflags: /n /s

---- TestCpp.cpp ----
#ifdef __cplusplus
extern "C" {
#endif
class CMyClass
{
public:
    CMyClass(int a, int b);
   ~CMyClass();
private:
    char m_Test;
};

CMyClass::CMyClass(int a, int b)
{
}
CMyClass::~CMyClass()
{
}
#ifdef __cplusplus
}
#endif

---- CppSupp.c ----

int delete(void near* Ptr)
{
    if (Ptr) return 0;
    return 1;
}
unsigned int near *new(unsigned int Size)
{
    return (unsigned int *)0;
}

----- Mapfile extrakt --------
 0000:0135 idle  NEW
 0000:013C idle  DELETE
.
.
 0000:014E idle  cmyclass::cmyclass(int,int)
 0000:0174 idle  cmyclass::~cmyclass()
.
.
Error: Undefined symbol operator delete(void near*) in module 
TESTCPP.CPP
Error: Undefined symbol operator new(unsigned int) in module TESTCPP.CPP
Persönliche Seite #1438633
Der Linker erwartet new und delete mit C++-Linkage (d.h. die Symbolnamen 
enthalten zusätzliche Typinformationen, die mit "name mangling" 
transportiert werden), Du aber stellst sie mit C-Linkage (also ohne 
Typinformationen) zur Verfügung.

Du müsstest Dein Zusatzmodul als C++-Code übersetzen oder aber die 
Funktionsprototypen von new und delete explizit als extern "C" 
deklarieren.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.