
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.188] |
![]() |
|
Страницы: (117) « Первая ... 93 94 [95] 96 97 ... 116 117 ( Перейти к последнему сообщению ) |
![]() |
Сообщ.
#1411
,
|
|
Цитата --Ins-- @ Тут просто поступил укор, что в Delphi нельзя собирать из C-шных исходников. Как будто бы наоборот - можно ![]() Да можно, можно. Правда, такая фигня получается... ![]() |
Сообщ.
#1412
,
|
|
|
Цитата Да можно, можно. С этого момента - поподробнее, пожалуйста... Я так понял, Вы хотите сказать, что в компиляторы C++ (Builder стоит особняком) встроены лексические анализаторы и компиляторы языка Delphi? ![]() |
Сообщ.
#1413
,
|
|
|
ну так я знаком и даже не поверхностно, а нормально! просто я хотел сказать что на Delphi намного проще импортировать функции и писать DLL'ки. |
![]() |
Сообщ.
#1414
,
|
|
Цитата --Ins-- @ С этого момента - поподробнее, пожалуйста... Я так понял, Вы хотите сказать, что в компиляторы C++ (Builder стоит особняком) встроены лексические анализаторы и компиляторы языка Delphi? Я же говорю - фигня получается. Это был шютк, --Ins--, расслабьтесь ![]() |
Сообщ.
#1415
,
|
|
|
Цитата Ahilles @ просто я хотел сказать что на Delphi намного проще импортировать функции и писать DLL'ки. Ок, пишу DLL на С++: ![]() ![]() #define EXPORT __declspec(dllexport) EXPORT void foo() { // ... } EXPORT int x; В чём здесь принципиальная сложность? Дальше, пишу прогу, использующую эту DLL: ![]() ![]() #include <ostream> #include <iostream> #define IMPORT __declspec(dllimport) IMPORT void foo(); IMPORT extern int x; int main() { foo(); std::cout << x << std::endl; } А здесь в чём сложность? ![]() |
Сообщ.
#1416
,
|
|
|
Цитата Ahilles @ просто я хотел сказать что на Delphi намного проще импортировать функции и писать DLL'ки. Пример в студию, ибо неочевидно. |
Сообщ.
#1417
,
|
|
|
Цитата ch__ @ Пример в студию, ибо неочевидно Не надоело очевидными вещами перекидываться? На самом деле Вы все неправы, проще всего на асме: ![]() ![]() procdesc SQLAllocHandle :DWORD,:DWORD,:DWORD includelib ".\lib\odbc32.lib" .... call SQLAllocHandle, SQL_HANDLE_ENV, SQL_NULL_HANDLE, ebx ![]() ![]() ![]() |
Сообщ.
#1418
,
|
|
|
Цитата --Ins-- @ Нет. Мысль была в том, что это Delphi'стам нужны сишные библиотеки(откомпилиролванные в DLL), а не наоборот. Поэтому Borland и решила решить вопрос библиотек встраиванием некоей конструкции в язык ObjectPascal. Тут просто поступил укор, что в Delphi нельзя собирать из C-шных исходников. Как будто бы наоборот - можно Добавлено Цитата AndNot @ Не надоело очевидными вещами перекидываться? На самом деле Вы все неправы, проще всего на асме: ![]() ![]() #pragma comment(lib,"odbc32.lib") void SQLAllocHandle(int, int, int); ... SQLAllocHandle(0,SQL_HANDLE_ENV, SQL_NULL_HANDLE); ![]() |
Сообщ.
#1419
,
|
|
|
Цитата trainer @ А проще можешь #pragma comment(lib,"odbc32.lib") void SQLAllocHandle(int, int, int); ... SQLAllocHandle(0,SQL_HANDLE_ENV, SQL_NULL_HANDLE); ![]() ![]() ![]() extrn SQLAllocHandle ... call SQLAllocHandle, SQL_HANDLE_ENV, SQL_NULL_HANDLE, ebx ![]() |
Сообщ.
#1420
,
|
|
|
Цитата Нет. Мысль была в том, что это Delphi'стам нужны сишные библиотеки(откомпилиролванные в DLL), а не наоборот. Поэтому Borland и решила решить вопрос библиотек встраиванием некоей конструкции в язык ObjectPascal. Понятно. Согласен, только там не только под C/С++ подстраиваются, а в общем-то под все, что только может быть. Модели вызова подпрограмм у разных языков свои, где-то параметры через стек передаются, где-то - через регистры, где-то - слева-направо, где-то справа-налево. Где-то принято стек за собой подчищать самой подпрограмме, а где-то - вызывающему коду. На эти различные случаи и предусмотрены директивы вызова, чтобы можно было безболезненно использовать "чужие" библиотеки, даже если правила вызова функций в них не совпадают с принятыми в Delphi правилами. Думаю, вы это и без меня знаете. ![]() |
Сообщ.
#1421
,
|
|
|
Цитата AndNot @ могу.А проще можешь ![]() ![]() void SQLAllocHandle(int, int, int); ... SQLAllocHandle(0,SQL_HANDLE_ENV, SQL_NULL_HANDLE); ![]() ![]() SQLAllocHandle(0,SQL_HANDLE_ENV, SQL_NULL_HANDLE); ![]() Это в расчете на то, что никто из пишущих на C/C++ ассемблера не знает? |
Сообщ.
#1422
,
|
|
|
trainer, а теперь поясни
![]() ![]() |
Сообщ.
#1423
,
|
|
|
Цитата AndNot @ Не надоело очевидными вещами перекидываться? На самом деле Вы все неправы, проще всего на асме: procdesc SQLAllocHandle :DWORD,:DWORD,:DWORD includelib ".\lib\odbc32.lib" .... call SQLAllocHandle, SQL_HANDLE_ENV, SQL_NULL_HANDLE, ebx а FASM'y вообще не нужны *.LIB. На Delphi порсто пишешь что функция external и всё! больше ничего не надо! Т.е. я хочу сказать что на Delphi и FASM НЕ НУЖНЫ лишние файлы, только сама DLL и всё! |
Сообщ.
#1424
,
|
|
|
Сообщ.
#1425
,
|
|
|
Цитата Ahilles @ Оставим в покое этот недоязык а FASM'y вообще не нужны *.LIB. ![]() Цитата Ahilles @ А вот мне, под тасм, вообще не нужно расписывать прототипы экспортируемых функций, достаточно указать препроцессору имена DLL и LIB файлов, а он сам их там найдет и подставит в программу. Т.е. я могу пользоваться любой функцией без ее предварительного объявления Т.е. я хочу сказать что на Delphi и FASM НЕ НУЖНЫ лишние файлы, только сама DLL и всё! ![]() |