 بسم اللہ الرحمن الرحیم آج ہم موڈیول 84 دسکس کریں گے موڈیول 84 ہے about explicit linking یہ آپ اپنے کوئی functions جس کسی طرح کے بھی functions ہوں ان کو بنا کے ایک DLL کے اندر اگر انکپسولیٹ کر کے رکھتے ہیں تو اس DLL میں سے آپ ان functions کو کیسے explicit ڈلی انوک کر سکتے ہیں explicit linking کے through اس کے لیے مختلف API'ز استعمال ہوتی ہیں جو ہم PREVIOUSLY دسکس کر چکے ہیں اس سے پہلے ہم نے اور بھی کئی چیزیں دسکس کیا ہے for example ہم نے کئی file operations دسکس کیا ہے file operations کرنے کے لیے ہم نے مختلف applications بنائیں تھی file conversion applications تھی اور وہ file conversion کرنے کے لیے مختلف قسم کے API'ز اور مختلف قسم کی تکنیگs use کریں تھی کچھ program ایسے تھے جو کہ file operations جو ہم آپ کے جس طرح open file or read file or write file ان functions کو use کر کے file میں سے read write کر رہے تھے اور کچھ ایسے ہیں جو کہ جس کے اس کے اندر ہم نے file کو memory کے پر ماب کر لیا تھا اس کا ایک view بنائلیا تھا اور اس view کے through ہم نے file کے پر read write operations پھر جو ہمارے program تھے وہ کچھ conversion program تھے جو میبھی lower سے اپر اس میں text کو convert کر رہ تھے یا text کو encrypt کر رہ تھے یا مختلف طریقوں سے اس کے اندر پڑے وے text کو process کر رہ تھے تو ہم کیا کر سکتے ہیں ہم ان functions کو یہ already functions بنے ہوئے ان کو ایک DLL کے اندر encapsulate کر کر دیتے ہیں اور پھر ہم ان functions کو اپنے کسی دوسری application کے اندر DLL میں سے invoke کریں گے یعنی کہ ایک DLL کے اندر ان functions کو encapsulate کر لیں گے DLL ہم کسی ایک پاتھ کے اوپر system 32 یا کسی اور پاتھ کے اوپر جو بھی اپروپیٹ ہے وہاں پہ اس DLL کو رکھ لیں گے اور پھر آپ کی علق سے جو دوسری application ہے وہ run time پہ اس DLL کے function کے ساتھ لنگ کرے گی اور اس DLL function کو invoke کرے گی تو یہ کیسے کیا جاتا ہے اس کے لیے ہمارے پاس یہاں پر ایک example ہے ایک example کی مدد سے ہم دیکھتے ہیں اس example کے اندر آپ دیکھ سکتے ہیں یہ آپ کی application کا main ہے اس main کے اندر آپ نے یہ function اپنا define کیا یہ وہ function ہے جو DLL کے اندر پڑا ہوئے DLL آپ نے لکھی ہوئے اس کے اندر اس function کو آپ نے already define کیا ہے اور یہاں پہ آپ نے اس کی parameter list بھی سپیسفائے کرنی ہے اس کے اندر تین طرح کی parameter پاس ہو رہے ہیں دو string type ہے اور ایک double word ہے پھر یہ module type ہے یہاں پہ آپ نے اس کا نام hdll لکھا ہے this is handle to module یعنی کہ جب بھی آپ DLL کو اپن کرتے ہیں تو اس طرح آپ کے پاس ایک handle آتا ہے اس handle کے لیے آپ نے type define کیا ہے h module اور far procedure کا address far proc that is address of a far procedure تو اس کے لیے ہم نے pointer define کر دیئے PCCI یہ ہمارے function کا pointer ہوگا جو ہمیں DLL میں سے ملتا پھر اس کے بعد ہم کیا کرتے ہیں اپنہا جو argument v ہے جو ہمیں command line کے پر argument v ملے اس argument v کو ہم load library کو پاس کرتے ہیں اگر load library جو ہے وہ successful ہوگی تو آپ کے پاس handle آجائے گا handle to DLL اگر نہیں ہوگی تو اس کے اس میں آپ error report کرتے ہیں پھر آپ کے پاس successful جب handle آجاتا ہے تو اس handle کو use کر کے آپ get proc کرتے ہیں کس کا get proc کرتے ہیں یہ آپ کے function کا نام ہے اس function کا نام ہے اس function کہ procedure کا آپ address get کریں گے آپ جو address ملا وہ آپ نے اس pointer کے اندر far proc جو pointer تھا اس کے اندر اس کو store کر لیا اب اگر آپ کے پاس یہ value نال نہیں ہے اس کا مطلب ہے کہ یہ address exist کرتا ہے یعنی کہ procedure اس DLL کے اندر exist کرتا ہے اگر یہ نال ہے اس کے اندر آپ exit کر دیں گے اگر نال نہیں ہے تو آپ نے یہ والا pointer جو ہے اپنے اس function کو assign کر دیا اور پھر آپ نے اس function کو call کیا اور اس کو دوسری argument وہ pass کیا argument pass کرنے پے function ہے وہ call ہوگا argument یہ یہ ہی ہیں کہ اس کے اندر ایک source file name ہوگا دوسرے destination file name ہوگا اور جو آپ نے operation specify کیا operation جو perform کرنے آپ نے یہ سارے جتنے بھی parameters ہے یہ سارے parameters آپ نے pass کیا اس function کو یہ function جو ہے file operation perform کریں گا file operation اگر unsuccessful ہوتے یہاں پر not کی case کے اندر اگر unsuccessful ہوتا اس کے case میں آپ report error کریں اگر successful ہو رہا ہے تو صرف آپ free library کریں unsuccessful ہو رہا ہے اس کے اس میں بھی free library کریں کہنے کے جو dll handle ابی آپ use کرتے ہیں اس handle کو آپ free کریں یہ ہم نے پہلے بھی چیز discuss کیا ہے کہ جتنے بھی آپ handles ہوگا ہے use کرتے ہیں resources use کرتے ہیں اس کو end of the program پے ان resources کو free کرنا لازمیا تو یہ جو آپ نے dll open کیا ہے اس کا آپ کے پس handle آیا اپنی رہا جا نا چاہئی ہے in the end جو آپ program کو exit کرنے آپ نے جتنے بھی dll handles کھولے ہوئے ان dll handles کو آپ نے free کرنا تو یہاں پر ہم نے free library کی مدہ سے اس handle کو free کر دیا اور ان case of success بھی اس کو free کریں اور ان case کیا ان success ہو رہا ہے تب بھی آپ handle کو ہر صورت free کریں گے لیکن case unsuccessful ہوتے اس case کے اندر آپ یہ error report کریں