DLL to Lib

Windows ပေါ်မှာ Build လုပ်ရတာ တကယ်တော့ လွယ်လှတယ်မဟုတ်ဘူး Error အများဆုံးပေးပါတယ်။ Source Code တစ်ချို့ကလည်း Windows ပေါ်မှာ Build လုပ်ဖို့အတွက် Makefile ဒါမှမဟုတ် Visual Studion Project သတ်သတ်ပေးထားပေမယ့် မပါလာရင်တော့ တကယ်ပဲရွာလည်ပါပြီ GNU Autotools တွေကကောင်းပေမယ့် VC အတွက်ကတော့ အဆင်မပြေပါဘူး configure လုပ်လို့မရပါဘူး အဲဒီတော့တကယ်လို့ VC နဲ့ဘယ်လိုမှ Build လုပ်လို့မရရင်တော့ MinGW နဲ့ Build လုပ်ယူရင်ရတတ်ပါတယ် MinGW ကလည်း 64bits အတွက်က အမြဲတမ်းတော့ အဆင်မပြေတတ်ပါဘူး အဲဒီတော့ Windows ပေါ်မှာက VC ဘယ်မှမရမှသာ MinGW နဲ့လုပ်တာ ကောင်းပါတယ်။ MinGW နဲ့ကထွက်လာရင် exe or dll ထွက်လာတယ် အဲဒီ့မှာ dll တွေကအလုပ်လုပ်ပေမယ့် အဲဒီ့ dll တွေကို အခြားသော VC နဲ့ Build လုပ်မယ့်နေရာမှာ ယူသုံးချင်ရတော့ မရပြန်ပါဘူး သူ့အတွက်က lib လိုပါတယ်။ ဒါကလည်း dll ကို lib ပြန်ထုတ်လို့ရပါတယ် နည်းနည်းတော့ ကြံရဖန်ရတယ်။ Visual Studio မှာပါတဲ့ lib ဆိုတဲ့ Command နဲ့ lib ထုတ်ယူလို့ရပါတယ် ဒါပေမယ့် dll ထဲမှာပါတဲ့ defination စာရင်းကိုထည့်ပေးဖို့လိုအပ်ပါတယ် ဒါလည်းပြန်ထုတ်ယူလို့ရပါတယ်။ စမ်းကြည့်တဲ့အနေနဲ့ libjpeg ကို MinGW64 နဲ့ Build လုပ်ထားတယ်။ အရင်ဆုံးအနေနဲ့ dll ထဲကနေ defination စာရင်းကို အရင်ထုတ်ရမယ်။ dumpbin command နဲ့အလွယ်တကူ ထုတ်လို့ရပါတယ် ထွက်လာတဲ့ Results တွေကိုမလိုတာတွေ ဖျက်ရမှာပေါ့။ အလွယ်ဆုံးကတော့ အောက်မှာပြထားသလို Command Prompt ကို Quick Edit On ထားပြီး Select လုပ်ကူးလိုက်တာ အဆင်ပြေပါတယ်။

Dumpbin

Dumpbin

Name တွေကိုပဲကူးရပါမယ် တစ်ခြားဟာမပါရပါဘူး။ Text file အသစ်တခုယူ ပထမဆုံးတစ်ကြောင်းမှာ EXPORTS လို့ရေး အောက်ကနေ စောစောကကူးထားတဲ့ Name တွေကိုကူးထည့် ပြီးရင်တော့ extension ကို def နဲ့သိမ်းပါ။ def ရရင်တော့ lib ထုတ်လို့ရပါပြီ။

lib /def:libjpeg-8.def /out:libjpeg-8.lib /machine:x64

lib command ကိုသုံးပြီးထုတ်ရင် lib file ရလာပါလိမ်မယ် အဲဒီ့ဖိုင်ကိုရရင်တော့ VC နဲ့ Build ရင်လည်း အဲဒီ့ Library တွေကို ကိုယ့်ရဲ့ Project ထဲကနေ Reference လုပ်ပြီးတော့ ယူသုံးလို့ရနေပါပြီ။

Reference:

http://wiki.videolan.org/GenerateLibFromDll

လေးလေးနက်နက် ကြီးကြီးမားမား

ပေါ့ပေါ့ပါးပါးစာ မဖတ်တတ်ဘူး လေးလေးနက်နက်ရှိတဲ့ဟာပဲ ဖတ်တယ်လို့ပြောလို့ အတော်ကောင်းသွားတယ် သေးသေးမွှားမွှားလည်း ဖတ်လေ့မရှိဘူး ကြီးကြီးမားမားစာပဲ ဖတ်တယ်လို့ဆိုလို့လည်း ရသွားတယ်ပြောရမယ် မနက်ကညီမဖြစ်သူက ဦးလေးအိမ်ကအပြန်မှာ ဦးလေးဖြစ်သူကနင့်အစ်ကိုကို ပေးလိုက်လို့ဆို စာအုပ်တစ်အုပ်သယ်လာပါတယ်။ စာအုပ်ကြီးက အကြီးကြီးပဲ အလေးချိန်က ၄ ပိဿာလောက်ရှိတယ် ကိုင်ဖတ်လို့တော့ မဖြစ်နိုင်ပါဘူး အဲဒါကြောင့် တကယ်ကိုပဲ လေးလေးပင်ပင်ရှိတဲ့စာအုပ်ပါ။ အရွယ်အစားက အလျားတစ်ပေ အနံဆယ်လက်မ အမြင့်ကသုံးလက်မလောက် ရှိတယ်ဆိုတော တကယ့်ကိုပဲကြီးကြီးမားမားစာလို့ ပြောလို့ရပါတယ်။ စာအုပ်နာမည်က Illustrated Dhammapada ရေးတဲ့ဆရာတော်ကြီးက Ven. Weragoda Sarada Maha Thero လို့ခေါ်တဲ့ သီရိလင်္ကာကဘုန်းတော်ကြီးပါ ဗုဒ္ဓသာသနာပြန့်ပွားရေးအတွက် အထူးကြိုးစားတဲ့ ဆရာတော်ကြီးတစ်ပါးပါပဲ။ စာအုပ်ကို Singapore Buddhist Meditation Centre ကနေ ၁၉၉၃ ပုံနှိပ်ခဲ့ပါတယ် စာအုပ်ရေ ၁၀၀၀၀ ပဲပုံနှိပ်ခဲ့တာပါ

အခုအချိန်မှာတော့လိုချင်ရင် E-Book ပဲရနိုင်ပါတော့တယ်။ ဓမ္မပဒဖြစ်လို့ အင်္ဂလိပ်လိုပဲဖြစ်ဖြစ် ဗမာလိုပဲဖြစ်ဖြစ်သိပ်ကွာခြားမှုမရှိပါဘူး စာအုပ်ကိုဖွင့်ကြည့်တော့ အရင်ဆုံး သဘောကျမိတာက သရုပ်ဖော်ပုံတွေပါပဲ။

သရုပ်ဖော်ပုံတွေကို ကုလားလေးတွေနဲ့ ဆွဲထားပါတယ် သဘာဝကျတယ်ပြောရမယ် ဗမာပြည်ကစာအုပ်ဆို ဗမာပုံတွေနဲ့ဆွဲဦးမှာပါ စင်္ကာပူမှာရိုက်ပေမယ့် တရုတ်ပုံနဲ့ထည့်မဆွဲတာ ကျေးဇူးတင်ရမယ်ထင်ပါတယ်။

Building Python extension with Windows SDK 7.1

Windows ပေါ်မှာ Python 64 bits သုံးနေရင် ပြဿနာက Extension တွေက 64 bits မရှိတဲ့ပြဿနာ ခဏခဏကြုံရတယ်။ 64 bits Build လုပ်ပြီးသားတွေကို Unofficial ပေးတဲ့ဆိုက်တွေလည်းရှိပါတယ် ဒါပေမယ့် လွယ်လွယ်ကူကူနဲ့ Dependency မများရင်ကိုယ်တိုင်လည်း Build လုပ်ယူလို့ရတာပါပဲ။ အဲဒီ့မှာအခက်အခဲရှိတာက MinGW32 ကိုအခုအချိန်မှာ အတော်များများက Support လုပ်တဲ့အတွက် ဘာမှမဖြစ်ပေမယ့် 64 bits လိုချင်တဲ့အတွက် MinGW64 သုံးမယ်ဆိုရင်တော့ ထင်သလောက်အဆင်မပြေပါဘူး MinGW32 ရဲ့ Configuration ဟာ MinGW64 နဲ့တိုက်ရိုက် အဆင်မပြေတာရှိပါတယ်။ ဒီတော့အကောင်းဆုံးကတော့ Visual C++ Compiler နဲ့ Build လုပ်တာအကောင်းဆုံးပါပဲ။ Python 2.7 ဟာ Visual Studio 2008 နဲ့ Build လုပ်ထားတဲ့အတွက် သူအတွက် Extension တွေကိုလည်း အတူတူပဲ VS 2008 နဲ့ပဲ Build လုပ်မှရပါတယ်။ 64 bits Build လုပ်ဖို့အတွက် အနည်းဆုံးအနေနဲ့ Visual C++ Express 2008 အပြင် Windows SDK လိုပါတယ် Windows 7 သုံးနေတဲ့အတွက် Microsoft Windows SDK for Windows 7 and .NET Framework 4 နဲ့ Build လုပ်ပါတယ်။

အဲဒီ့နှစ်ခုကို Install လုပ်ပြီးရင်တော့ ချက်ချင်းသုံးလို့မရသေးပါဘူး 64 bits အတွက် Configure လုပ်ဖို့အတွက် နည်းနည်းကြံရဖန်ရပါတယ်။ Visual Studio ကို Default Path မှာသာ Install လုပ်ထားမယ်ဆိုရင် C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC အောက်မှာ vcvarsall.bat ဆိုတာရှိပါတယ် အဲဒီ့ဖိုင်ထဲမှာ amd64 ဆိုရင် bin/amd64/vcvarsamd64.bat ကိုသွားခေါ်ခိုင်းတယ်။ ဒါပေမယ့် Windows SDK ထဲက 64 bits compiler and linker တွေက bin/amd64 အောက်မှာမရှိပဲ တစ်ခြားနေရာမှာရှိနေပါတယ် အဲဒါကြောင့် C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\ အောက်မှာ amd64 ဆိုပြီး Folder တစ်ခုထပ်ထည့် နောက်ပြီးတော့ amd64 ထဲမှာ vcvarsamd64.bat ဆိုပြီးဖိုင်တစ်ခု အသစ်ထည့်ရပါမယ်။ 64 bits Environment ကို Initialize လုပ်တဲ့ Script တွေက Windows SDK ထဲမှာရှိပြီးသားဖြစ်တဲ့အတွက် အဲဒါကိုပဲလှမ်းခေါ်ရင်ရပါတယ်။ vcvarsamd64.bat ထဲမှာ

call "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x64 /Release

ဆိုပြီးတစ်ကြောင်းထည့်ရေးလိုက်ရင် ရပါပြီ။ ဒါဆိုရင် Python ထဲကနေ Build လုပ်ကြည့်ရင်ရပါပြီ လွယ်လွယ်ကူကူဆိုရင် PyCrypto ရဲ့ Source ကို Download လုပ် setup.py build ဆိုလုပ်ကြည့်ရင် ရနေပါလိမ့်မယ်။