.dll Denetimi ve .exe olusturma



  • Herkese merhaba,

    .dll ve .exe yaratma konusunda baszi sorularim var:

    1. QtCreator IDE sini kullanarak yarattigim bir .exe dosyasi var. Ve ben bunu (win32) platformalarinda kullanmak istiyorum. Ancak, "QtCored4.dll is missing" hatasi veriyor. QtCored4.dll dosyasini .exe nin oldugu klasore kopyalayinca uygulama calisiyor ancak problemin cozumu daha profosyonel yoldan olmali diye icimde bir his var?

    Yani, QtCreator kullanarak derledigim bir kodu, nasil uygulama haline getirip, sadece exe kullanarak calistirabilecegim?

    1. exe uygulama dosyamin hangi .dll dosyalarina ihtiyac duydugunu nasil anlayabilirim? Dependency Walker programini kullaniyorum ancak programi tam kavrayamadim. QtCored4.dll dosyasi eksik diyor, onu kopyaladiktan sonra bir daha denetliyorum bu sefer daha baska hatalar veriyor. Ama programi baska bir dizinde calistirabiliyorum. Bu konuda fikri olan var mi?

    2. Hedefim bir odev kapsaminda bir program yazmak ve amacim exe yeterince kucuk tutup, butun kutuphanelerle iletisimimi .dll ler uzerinden yapmak istiyorum. Planim su sekilde:
      a) Arayuz ile ilgili her seyi Qt olusturdugum .dll ler ile halletmek istiyorum.
      b) Matematiksel islemler icin de Fortran ile olusturdugum .dll dosyalari ile halletmek istiyorum.
      c) Ana modulu de Visual Studio IDE sini kullanarak C++ ile halletmeyi planliyorum.

    Ozet olarak, bir hesaplama programi yapmak istiyorum. Hiz ve verim kaygim oldugu icin dinamik kutuphaneler kullanmak istiyorum. Ne tur bir yol izlemeliyim ve kullanmam gereken ek programlar nelerdir? (Mesela dinamik bellek sizintisini denetlemek icin...)

    Bana yukaridaki sorularimla ilgili uzman gorusune ihtiyacim vardir. Ayrintili bir cevap yazarsaniz sevinirim cunku kac gundur forumlari taradim ancak istegime uygun bir sey bulamadim.

    Bu sorular icin uzman gorusune ihtiyacim vardir.

    Tesekkurler...



  • If English is not problem for you following links are very useful:
    "Qt for Windows - Deployment":http://qt-project.org/doc/qt-5/windows-deployment.html
    "Deploy_an_Application_on_Windows":http://qt-project.org/wiki/Deploy_an_Application_on_Windows



    1. Burda ilk problem ihtiyac olan kutuphane dosyasinin sonunda "d" eki olmasi. D debug (hata ayiklama) anlamina geliyor. Kutuphanelerin hata ayiklama versiyonlari hata ayiklayabilmek icin. Mesela QtCored4.dll kutuphanesinin Core islevi disinda hata ayiklatabilme kabiliyeti var. Haliyle boyutu gozle gorulur sekilde daha fazla. Sen final ciktini "Release" modunda almalisin. Ayni kutuphanenin QtCore4.dll surumunu kullanmalisin.

    "Paylasilan Kutuphane" yonteminde bu mekanizma boyle calisiyor. Calistirilabilir dosyanin yaninda kutuphaneleri de dagitiyorsun. Ama bunlari bir exe dosyasinda birlestirmenin bir yolu var ve bir bakima daha profesyonel sayilabilir. Baska bir konuda bu konu hakkinda soyle demistim: "http://enigmaprotector.com/en/aboutvb.html aracini kullan. Add Folder Recursively / Compress Files."

    1. Hicbir gelistirme ortami yuklu olmayan yeni bir Windows kurulumunda tek tek hata alarak tam olarak ogrenebilirsin bagimliliklarini. Dependency Walker da kullanabilirsin, onunla ilgili karsilastigin sorunlar hakkinda fikrim yok.
      Bagimliliklarin adim adim artmasi ve degismesinin sebebi kutuphanenin de bagimliliklari olmasi. Mesela sen Qt 4 kullaniyorsun ama Qt 5'e gecince bu duruma vay be diyeceksin.

    2. Senin programin, senin kararin. Ama profesyonel yaklasim ne der dersen bence herseyi minimum cevresel degisken ile hallet der. Bu da su demek : Yani hepsi icin Qt kullan. Cunku yapabilirsin. Harici kutuphane kaydedip kullanmakta mumkun eger gerekiyorsa.

    Ozet olarak) Hiz ve verim maddelenmesi burda mumkun olmayacak kadar cok kritere bagli. Onu ayri bir konuda ve elindeki malzemeyi ortaya koyarsan daha iyi konusuruz. Ama burda konustuklarimiz calisma zamaninda performansi arttirmayacak seyler. Bellek sizintisi da senin heap'i nasil idare ettigin ile ilgili. New/delete meselesi.



  • Değerli dostum kesinlikle Qt kütüphanelerini paketlemek gibi taşınabilir yapmak gibi bir şey yapmaya çalışma. Nasıl .Net Framework, Java VM'i her makinaya kuruyorsan bu uygulamanın çalışması için de Qt Runtime'ı güzelce kurmanda ciddi fayda var. Evet o şekilde de çalışıyor ancak bu işlerin olması gerekeni bu demeliyim.



  • Bir arkadaş yukarıda ki cevabımın nedenini sormuş, buradan paylaşayım tekrardan. Bu gibi yapılar framework yapısıdır. Amaç zaten frameworkleri tümleşik kullanmak. Yani dll dll dağıtımı olsaydı win32 uygulama mantığındaki gibi framework geliştirilmezdi. Bu dll lerin birbirlerine bağımlıkları yüzünden. Zaten bu tarz bir yapıda frameworkün en iyi ihtimalle dll lerin yarısını almak zorunda kalabilir insan. Benim tavsiyem kesinlikle slient install filan yapabilen bir mantıkla qt yi kurmaktır. Ayrıca qt framework versiyonuna uygun da iş yürütülebilir.



  • Hayir.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.