Q:

Как в Delphi использовать исходники на C/C++?

Есть набор исходников на C/C++.
Как можно их использовать в Delphi?
Может как-то скомпилировать и подключить объектные файлы?
Какие есть способы?

A:

Так выглядит текст на C++
extern "C"
{
    HWND ShowReport(const char* host,
                    const char* base,
                    const char* login,
                    const char* pasword,
                    const int32_t id,
                    const int32_t argc,
                    const char** argv
                   )
    {
        ///......
        return hWnd;
    }

}

Обертывание в extern "C" нужно для того, чтобы C++ не выполнял для этой функции name mangling, и в dll она называлась точно также, как у нас в исходнике. Обратите также внимание, что для числовых типов жестко указаны длины в битах - int32_t - чтобы гарантировать совпадение с типами Delphi
Прототип этой функции для Delphi:
function ShowReport(
host:PAnsiChar;    
base:PAnsiChar;
login:PAnsiChar;
passwd:PAnsiChar;
id:longint;
argc:longint;
argv:PPAnsiChar):hwnd;cdecl;external 'showreport.dll' name 'ShowReport';

Указаны те же параметры, кроме того, указано соглашение о вызовах - cdecl и имя файла dll - showreport.dll и отдельно указано название функции - ShowReport
Полезный инструмент при работе с dll - Dependency Walker

Он выводит список всех функций, которые можно импортировать из DLL, а также список всех ее зависимостей.

A:

Есть 3 варианта:

Cкомпилировать код в виде внешней dll и переписать заголовочники с объявлением экспортируемых функций с Си на Delphi. Обычно, так возможно использовать только Си код, но если сильно захотеть и немало извернуться, то можно и С++: Using C++ objects in Delphi.
Сишным компилятором из поставки RAD Studio, скомпилировать Си код в объектные файлы *.obj, переписать объявление функций и дописать недостающие функции из стандартной библиотеки, которые, возможно использует сишный код. К примеру, именно так в Delphi используется zlib, а в mORMot даже SQLite3 умудрились прилинковать. Но не каждый код получится без проблем так скомпилировать, из-за особенностей компилятора и поддержки стандарта Си. Как это делается: Using C object files in Delphi (пишут, что начиная с XE2 можно даже линковать объектные файлы скомпилированные не в RAD Studio). Про С++, опять же, лучше сразу забыть.
Полностью портировать код на Delphi. 

