Главная страница
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.036 c
1-1118127057
-=snoop=-
2005-06-07 10:50
2005.06.29
добавление объекта на форму через код....


1-1118046072
Ньюб
2005-06-06 12:21
2005.06.29
Access Violation at address


4-1115265581
lokid7
2005-05-05 07:59
2005.06.29
CM_MOUSEENTER и WM_PAINT


3-1116259401
hjvd
2005-05-16 20:03
2005.06.29
перенос проги с БД с компа на комп


3-1115964188
MakNik
2005-05-13 10:03
2005.06.29
преобразовать таблицу в строку