Форум: "Основная";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];
ВнизИспользование кода CB в D Найти похожие ветки
← →
bns (2005-06-08 14:37) [0]Есть программа с текстами для CBuilder. Мне нужно вызывать методы этой программы из кода на D5/D7. Можно ли это сделать, не используя DLL?
Если вопрос тривиален, ткните в место, где можно об этом узнать.
Спасибо.
← →
TUser © (2005-06-08 14:40) [1]Не уверен, но кажется можно с использованием bpl.
← →
Digitman © (2005-06-08 14:40) [2]
> методы этой программы
у программы нет понятия "метод"
> Можно ли это сделать, не используя DLL?
можно, если речь идет не о расширении.
← →
bns (2005-06-08 14:44) [3]ну, виноват: не методы, а процедуры и функции.
Что имеется в виду под словом "расширение"?
← →
Digitman © (2005-06-08 14:46) [4]
> Что имеется в виду под словом "расширение"?
расширение имени файла
> процедуры и функции
сделай эту программу внешним олей/СОМ-сервером
← →
bns (2005-06-08 15:09) [5]Не хочется в COM залезать. На уровне линковки obj-файла, можно так сделать?
← →
Erik1 © (2005-06-08 16:38) [6]По идее можно.
← →
Digitman © (2005-06-08 16:47) [7]
> На уровне линковки obj-файла, можно так сделать?
какие нафих obj-файлы, коль речь идет о готовом приложении, сверстанном в чем угодно (в дан.случае - по горизонту в чем), в т.ч. и в СВВ ?
← →
bns (2005-06-08 17:13) [8]я, наверное, нечетко изложил проблему. Речь идет вот о чем: есть программа на С для CBuilder-a, есть ее текст. Хочется не портируя этот текст на pascal, не пользуясь dll, вызывать процедуры и функции программы на С из другой программы, написанной на паскале.
Если это можно сделать, пожалуйста, несколько инструкций, как это можно сделать.
← →
PVOzerski © (2005-06-08 17:18) [9]Если программа использует минимум библиотек (и хорошо, если она написана действительно на C, а не на C++, и, соответственно, не использует классов), можно попытаться с минимумом модификаций скомпилировать ее в obj-файл и статически прилинковать. Правда, куски сишной RTL в том или ином виде потянутся вслед почти наверняка, и придется либо разбирать на модули сишную RTL, либо привязываться к какой-нибудь crtdll.dll, либо переписывать эти функции с теми же именами на паскале (ну, или на си :) )...
← →
bns (2005-06-09 17:25) [10]А можно спросить про тонкости процесса? В Delphi прописал search path к obj файлу и файлу .h проекта. После компиляции нашлись ошибки:
[Error] Unsatisfied forward or external declaration: "__Return_unwind"
[Error] Unsatisfied forward or external declaration: "@__InitExceptBlockLDTC"
[Error] Unsatisfied forward or external declaration: "_strlen"
[Error] Unsatisfied forward or external declaration: "NetGetDCName"
[Error] Unsatisfied forward or external declaration: "_printf"
[Error] Unsatisfied forward or external declaration: "_sprintf"
[Error] Unsatisfied forward or external declaration: "_strcat"
Что я не так делал?
Спасибо.
← →
pasha_golub © (2005-06-09 17:45) [11]bns (09.06.05 17:25) [10]
О чем и говорилось ранее... Надо тянуть за собой Сишную RTL.
Я тоже это пытался сделать. Такого гемора в жизни своей не видывал.
Короче, мой вам совет юзайте dll.
← →
PVOzerski © (2005-06-09 17:45) [12]Да всё ты так делал... Разве что путь к хедеру для паскального компилятора не нужен. Просто прогноз оправдался: потянулись системные функции.
← →
PVOzerski © (2005-06-09 17:52) [13]NetGetDCName - это из NETAPI32.DLL,
_strlen, _printf, _sprintf, _strcat есть, например, в crtdll.dll,
а вот __Return_unwind и @__InitExceptBlockLDTC - штуки, видимо, специфические для Borland... Либо реализовывать самому, либо выдирать из RTL. Хорошо, если хотя бы какая-то дока есть по этим функциям.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.055 c