Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Bulgarian
  4. Импортиране на dll файлове
QtWS25 Last Chance

Импортиране на dll файлове

Scheduled Pinned Locked Moved Bulgarian
8 Posts 3 Posters 4.9k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • H Offline
    H Offline
    HerpaMoTeH
    wrote on last edited by
    #1

    Здравейте :)
    Въпроса ми е дали някой е импортирал .dll файлове в проекта си и как става номера ? Доколкото разбрах има два метода:
    Първият е да се включи с LIBS += ,а другият е с QLibrary. Кой от двата според вас е по-добър ?

    1 Reply Last reply
    0
    • T Offline
      T Offline
      task_struct
      wrote on last edited by
      #2

      Здравей,

      QLibrary зарежда библиотеката по време на изпълнение и ти позволява да търсиш за символи в нея и да изпълняваш намерените резултати.

      За пример:

      @
      QLibrary myLib("mylib");
      typedef void (*MyPrototype)();
      MyPrototype myFunction = (MyPrototype) myLib.resolve("mysymbol");
      if (myFunction)
      myFunction();
      @

      LIBS линква библиотеката с товята програма, по време на компилация. Т.е ако използваш функция от дадената библиотека, линкера ще я свърже. Ако не си задал библиотеката, линкера няма да може да намери функцията и ще ти даде грешка.

      В общи линии зависи от това какво искаш да направиш.

      "Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program."

      • Linu...
      1 Reply Last reply
      0
      • L Offline
        L Offline
        leon.anavi
        wrote on last edited by
        #3

        [quote author="HerpaMoTeH" date="1321284532"]Здравейте :)
        Въпроса ми е дали някой е импортирал .dll файлове в проекта си и как става номера ? ?[/quote]

        [quote author="task_struct" date="1321287336"]QLibrary зарежда библиотеката по време на изпълнение и ти позволява да търсиш за символи в нея и да изпълняваш намерените резултати.
        [/quote]

        И с оглед на това, че DLL са динамични билиотеки за windows, които предполагат свързване по време на изпълнение, по-добре е да се зареждат именно по време на изпълнение на приложението с "QLibrary":http://doc.qt.nokia.com/latest/qlibrary.html.

        http://anavi.org/

        1 Reply Last reply
        0
        • T Offline
          T Offline
          task_struct
          wrote on last edited by
          #4

          Аз си представям QLibrary като абстракция около "dlopen() за Линукс и еквивалента на за Win":http://pubs.opengroup.org/onlinepubs/009695399/functions/dlopen.html , т.е да се използва за зареждане на плъгини. Примерно твоето приложение има много функционалности, но клиента не се нуждае от тях непрекъснато, и за да намалиш времето за зареждане на приложението, зареждаш плъгина, когато има нужда от него.

          "Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program."

          • Linu...
          1 Reply Last reply
          0
          • H Offline
            H Offline
            HerpaMoTeH
            wrote on last edited by
            #5

            Значи, ако съм разбрал правилно с QLibrary мога да достъпя и използвам функциите на библиотеката, ако открие съответсвие в самата библиотека. Това, което търся е да отвори dll файла по същия както се отварят библиотеките, т.е. като започна да пиша функцията да ми излезе предложение за дописване на функцията.

            1 Reply Last reply
            0
            • T Offline
              T Offline
              task_struct
              wrote on last edited by
              #6

              Това ще ти излезе, ако посочиш къде се намират хедър фейловете с декларациите на класовете/функциите в библиотеката. Виж "INCLUDEPATH":http://doc.qt.nokia.com/stable/qmake-variable-reference.html#includepath . Qt Creator, както и всички останали IDE-та просто парсват хедър файловете и си създават хеш таблици от дефинциите на променливи, функции, класове и когато пишеш търсят в тях.

              "Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program."

              • Linu...
              1 Reply Last reply
              0
              • H Offline
                H Offline
                HerpaMoTeH
                wrote on last edited by
                #7

                А хедър файла съдържа ли се в .dll файла? DLL, който смятам да ползвам съдържа платен компонент. Самият dll е писан на C#, работи на VB.NET, но също така пише, че работи и на C++.

                1 Reply Last reply
                0
                • T Offline
                  T Offline
                  task_struct
                  wrote on last edited by
                  #8

                  Не. dll-а съдъжа изпълнимият код, който после се свързва с твоята програма, когато тя се стартира. За това се наричат динамични библиотеки. Хедър файловете попринцип се инсталират отделно. На Windows не знам как става. Може и да ги имаш инсталирани, но предполагам, че ще трябва да си ги свалиш от сайта на библиотеката.

                  "Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program."

                  • Linu...
                  1 Reply Last reply
                  0

                  • Login

                  • Login or register to search.
                  • First post
                    Last post
                  0
                  • Categories
                  • Recent
                  • Tags
                  • Popular
                  • Users
                  • Groups
                  • Search
                  • Get Qt Extensions
                  • Unsolved