На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Закрыто archimed7592 11-03-2008: Лимит страниц. Продолжаем Delphi vs C++

Страницы: (117) « Первая ... 93 94 [95] 96 97 ...  116 117  ( Перейти к последнему сообщению )  
> Delphi vs C++ , Часть 1
    Цитата --Ins-- @
    Тут просто поступил укор, что в Delphi нельзя собирать из C-шных исходников. Как будто бы наоборот - можно :)

    Да можно, можно. Правда, такая фигня получается... :lol:
      Цитата
      Да можно, можно.


      С этого момента - поподробнее, пожалуйста... Я так понял, Вы хотите сказать, что в компиляторы C++ (Builder стоит особняком) встроены лексические анализаторы и компиляторы языка Delphi? :blink:
        Цитата b-a1 @
        Просто нужно хотя бы поверхностно быть знакомым с обоими областями

        ну так я знаком и даже не поверхностно, а нормально!
        просто я хотел сказать что на Delphi намного проще импортировать функции и писать DLL'ки.
          Цитата --Ins-- @
          С этого момента - поподробнее, пожалуйста... Я так понял, Вы хотите сказать, что в компиляторы C++ (Builder стоит особняком) встроены лексические анализаторы и компиляторы языка Delphi?

          Я же говорю - фигня получается. Это был шютк, --Ins--, расслабьтесь :)
            Цитата Ahilles @
            просто я хотел сказать что на Delphi намного проще импортировать функции и писать DLL'ки.

            Ок, пишу DLL на С++:
            ExpandedWrap disabled
              #define EXPORT __declspec(dllexport)
               
              EXPORT void foo()
              {
                // ...
              }
               
              EXPORT int x;

            В чём здесь принципиальная сложность?

            Дальше, пишу прогу, использующую эту DLL:
            ExpandedWrap disabled
              #include <ostream>
              #include <iostream>
               
              #define IMPORT __declspec(dllimport)
               
              IMPORT void foo();
              IMPORT extern int x;
               
              int main()
              {
                  foo();
                  std::cout << x << std::endl;
              }


            А здесь в чём сложность? :)
              Цитата Ahilles @
              просто я хотел сказать что на Delphi намного проще импортировать функции и писать DLL'ки.

              Пример в студию, ибо неочевидно.
                Цитата ch__ @
                Пример в студию, ибо неочевидно


                Не надоело очевидными вещами перекидываться? На самом деле Вы все неправы, проще всего на асме:
                ExpandedWrap disabled
                  procdesc SQLAllocHandle :DWORD,:DWORD,:DWORD
                   
                  includelib      ".\lib\odbc32.lib"
                   
                  ....
                          call    SQLAllocHandle, SQL_HANDLE_ENV, SQL_NULL_HANDLE, ebx
                :lol: :lol: :lol:
                  Цитата --Ins-- @
                  Тут просто поступил укор, что в Delphi нельзя собирать из C-шных исходников. Как будто бы наоборот - можно
                  Нет. Мысль была в том, что это Delphi'стам нужны сишные библиотеки(откомпилиролванные в DLL), а не наоборот. Поэтому Borland и решила решить вопрос библиотек встраиванием некоей конструкции в язык ObjectPascal.

                  Добавлено
                  Цитата AndNot @
                  Не надоело очевидными вещами перекидываться? На самом деле Вы все неправы, проще всего на асме:
                  ExpandedWrap disabled
                    #pragma comment(lib,"odbc32.lib")
                    void SQLAllocHandle(int, int, int);
                    ...
                    SQLAllocHandle(0,SQL_HANDLE_ENV, SQL_NULL_HANDLE);
                  :D
                    Цитата trainer @
                    #pragma comment(lib,"odbc32.lib")
                    void SQLAllocHandle(int, int, int);
                    ...
                    SQLAllocHandle(0,SQL_HANDLE_ENV, SQL_NULL_HANDLE);
                    А проще можешь ;)
                    ExpandedWrap disabled
                      extrn SQLAllocHandle
                      ...
                              call    SQLAllocHandle, SQL_HANDLE_ENV, SQL_NULL_HANDLE, ebx
                    :D
                      Цитата
                      Нет. Мысль была в том, что это Delphi'стам нужны сишные библиотеки(откомпилиролванные в DLL), а не наоборот. Поэтому Borland и решила решить вопрос библиотек встраиванием некоей конструкции в язык ObjectPascal.


                      Понятно. Согласен, только там не только под C/С++ подстраиваются, а в общем-то под все, что только может быть. Модели вызова подпрограмм у разных языков свои, где-то параметры через стек передаются, где-то - через регистры, где-то - слева-направо, где-то справа-налево. Где-то принято стек за собой подчищать самой подпрограмме, а где-то - вызывающему коду. На эти различные случаи и предусмотрены директивы вызова, чтобы можно было безболезненно использовать "чужие" библиотеки, даже если правила вызова функций в них не совпадают с принятыми в Delphi правилами. Думаю, вы это и без меня знаете. ;)
                        Цитата AndNot @
                        А проще можешь
                        могу.
                        ExpandedWrap disabled
                          void SQLAllocHandle(int, int, int);
                          ...
                          SQLAllocHandle(0,SQL_HANDLE_ENV, SQL_NULL_HANDLE);
                        Могу и еще проще
                        ExpandedWrap disabled
                          SQLAllocHandle(0,SQL_HANDLE_ENV, SQL_NULL_HANDLE);
                        :D

                        Это в расчете на то, что никто из пишущих на C/C++ ассемблера не знает?
                          trainer, а теперь поясни ;) Не врубился :wall:
                            Цитата 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 и всё!
                            Сообщение отредактировано: Ahilles -
                              Цитата
                              только сама DLL и всё!

                              Строго говоря, сама DLL тоже не нужна. Без нее прекрасно скомпилируется (но не запустится).

                              PS: Всегда говорил, что C/C++ - это язык дьявола! (см. вложение) :lol:
                              Прикреплённая картинка
                              Прикреплённая картинка
                                Цитата Ahilles @
                                а FASM'y вообще не нужны *.LIB.
                                Оставим в покое этот недоязык ;) Предназначение lib-файлов более широкое, нежели экспорт функций DLL. Экспорт могли бы реализовать и без lib, но сделали так только из-за того, что бы программисту не нужно было задумываться, откуда экспортируются функции, из DLL или из пользовательских LIB-файлов(т.е. библиотека OBJ-файлов), что довольно удобно.
                                Цитата Ahilles @
                                Т.е. я хочу сказать что на Delphi и FASM НЕ НУЖНЫ лишние файлы, только сама DLL и всё!
                                А вот мне, под тасм, вообще не нужно расписывать прототипы экспортируемых функций, достаточно указать препроцессору имена DLL и LIB файлов, а он сам их там найдет и подставит в программу. Т.е. я могу пользоваться любой функцией без ее предварительного объявления :tong: Так как там Дельфи то?
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (117) « Первая ... 93 94 [95] 96 97 ...  116 117
                                Закрыто archimed7592 11-03-2008: Лимит страниц. Продолжаем Delphi vs C++



                                Рейтинг@Mail.ru
                                [ Script execution time: 0,1368 ]   [ 15 queries used ]   [ Generated: 26.07.25, 22:12 GMT ]