Ошибки C ++ / Ada Link

Я совсем не знаком с ошибками ссылок, поэтому я надеялся, что кто-нибудь сможет пролить свет на эти ошибки …

Я работаю с программой Legacy Ada. Я разрабатываю расширение C ++, в котором Ada будет использовать прокси для вызова функций C ++. C ++ компилируется без каких-либо предупреждений. Однако я получаю следующие неопределенные ошибки символов:

__nw__FUi
__walkback
__dl__FPv

Кодовая база выглядит следующим образом:

#include "cppProxy.h"extern classHandler *classPtr;

void processData(void* ioBuffer)
{
classPtr->processData(ioBuffer);
}

Заголовочный файл:

#include "classHandler.h"extern "C" void processData(void* ioBuffer);

classHandler.cpp

extern "C"{
classHandler* create()
{
return new classHandler;
}
void destroy(classHandler *p)
{
delete p;
}
}

void processData(*ioBuffer)
{
int idx;
data = static_cast<int*>(ioBuffer);

idx = (data[0] >> 16);
returnData[idx] = data;
}

classHandler.h

class classHandler
{
public:
classHandler();
~classHandler();

void processData(void* ioBuffer);
};

typedef classHandler classPtr;
typedef void destroy_t(classHandler*);

Теперь цель состоит в том, чтобы C ++ отслеживал объект, поэтому я пытался создать синглтон, который затем вызывался бы. Глядя на текущее состояние кода, я пытаюсь выяснить, где это происходит, поскольку я сделал несколько изменений, пытаясь исправить ошибку компоновщика.

В целом мне интересно, действительно ли это ошибка компоновки или проблема с реализацией моего класса. Я склоняюсь к последнему, но все еще не уверен, как решить проблему.

Еще раз дизайн, который я собираюсь сделать, выглядит следующим образом:

Реализовано:
Ада вызывает C ++ для обработки данных.
C ++ анализирует данные и сохраняет их локально.

Не реализованы:
Ада вызывает C ++ для получения данных.
C ++ выполняет поиск и возвращает массив данных.

Буду признателен за любую помощь, так как в данный момент я потерян в своем собственном коде. Спасибо!

EDIT1:

Код Ады слишком надежен, но я точно знаю, что эта сторона верна. Что касается компилятора, я использую Concurrent ANSI C / C ++ компилятор (PowerPC) — 5,4 (005). Я не могу изменить компиляторы. Первые два фрагмента являются прокси-слоем кода. Это то, что часть Ada использует для взаимодействия с кодом C ++.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …