19 Ağustos 2015 Çarşamba

PInvoke Hatalarını Debug Etmek

DLL'leri PInvoke ile kullanmak istediğinizde,eğer LoadLibrary windows apisi ile DLL belleğe yüklenmiyorsa, veya diğer invoke işlemlerinde problemler varsa;

"GetLastError function" ile hata kodu ve detay mesajları incelenmelidir.

"Dependency Walker" ve "Process Monitor" gibi araçlarla,
DLL'in diğer başka DLL'lere bağımlılıklarını ve diğer (registry,file system,network vs) etkileşimini izleyip,sonuçlara (Result) göre problemleri tespit edebilmek mümkündür.


Örneğin Visual C++ da geliştirmiş olduğum, bir Win32 DLL içersinde ki fonksiyonları
çağırmak istediğimde ,LoadLibrary apisi ile DLL yükleme işlemi başarısız olmaktaydı.



"Dependency Walker" ile DLL'in bağımlı olduğu diğer DLL'leri ilgili "path"lere kopyalayarak çözmek mümkündür.



MSVCR120.dll dosyasını temin etmek için,"Visual C++ Redistributable Packages for Visual Studio 2013" indirip kurmak yeterlidir.