Вам нужно будет сопоставлять вызовы API, и это становится излишним и скучным. Однако, мне кажется, что работа оправдана, потому что ваша DLL может быть использована практически в любом месте на данном этапе. Цель состоит в том, чтобы обернуть проект C ++ Builder, поскольку он компилирует файлы .pas, которые удобны для компилятора вне мира C ++ Builder / Delphi.
По моему опыту, написание функций "C", которые принимают непрозрачный указатель, является наиболее гибким подходом:
typedef void * MYHANDLE;
extern "C" MYHANDLE CreateMyObject(void)
{
MyCppObject * obj = new MyCppObject();
return static_cast<MYHANDLE>(obj);
}
/* Calls to your other C++ methods as well */
extern "C" void DeleteMyObject(MYHANDLE obj)
{
MyCppObject * ptr = static_cast<MyCppObject*>(obj);
delete ptr;
}