Я совсем не знаком с ошибками ссылок, поэтому я надеялся, что кто-нибудь сможет пролить свет на эти ошибки …
Я работаю с программой 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 ++.
Задача ещё не решена.
Других решений пока нет …