Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.06.29;
Скачать: CL | DM;

Вниз

Использование кода 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.034 c
14-1117093103
Drakosha
2005-05-26 11:38
2005.06.29
bat cmd файлы


14-1117753713
kaif
2005-06-03 03:08
2005.06.29
Почему правильно писать "класс" и неправильно писать "аддресс"?


1-1117798590
Николай
2005-06-03 15:36
2005.06.29
Удаление записей помеченных на удаление из базы


3-1115995250
Lex_!
2005-05-13 18:40
2005.06.29
TThread и работа с базой


14-1117275248
Igorek
2005-05-28 14:14
2005.06.29
Длительное чтение с монитора