VB dùng dynamic call, nó tạo ra 1 internal struct, gọi là DllCalls, chứa tên DLL, tên hàm, addr của hàm. Khi VB app gọi tới 1 hàm trong DLL, nó sẽ kiểm tra addr có NULL không, nếu không thì call, ngược lại thì LoadLibrary và GetProcAddress.
Trong VB có cần file .lib đâu nhỉ, trong VC thì làm thế nào để sử dùng dll nếu ko có file .lib
Life:\> dir
VB dùng dynamic call, nó tạo ra 1 internal struct, gọi là DllCalls, chứa tên DLL, tên hàm, addr của hàm. Khi VB app gọi tới 1 hàm trong DLL, nó sẽ kiểm tra addr có NULL không, nếu không thì call, ngược lại thì LoadLibrary và GetProcAddress.
Hiểu rồi, vậy có cách nào biết được hàm trong dll đó dùng bao nhiêu tham số và kiểu của từng tham số ko ???
Đã được chỉnh sửa lần cuối bởi hoanglinh9466 : 23-07-2007 lúc 09:58 AM.
Life:\> dir
cậu dùng LoadLibrary và GetProcAddress thì giống VB, chẳng cần .lib hay .h gì cả
Chỉ có thể biết tên procedure không thể biết tham số của nó, cậu phải đọc tài liệu đi kèm, vì dll nào người ta khuyến khích dùng lạiđều có tài liệu cả. Lý do đơn giản cậu có thể biết tham số của nó là 1 số 1 integer chẳng hạn, thì thực sự kiểu của nó có thể là int, hoặc các kiểu con trỏ,... nên đọc tài liệu để có thể dùng đúng
Nếu dll đó đi kèm với lib, h, help thì dể rồi, read help và làm theo thì xong. Trường hợp chỉ có DLL thì hơi khó, phải reverse engineering ra thì sẽ tìm gần đúng 80% cách gọi, tham số, tác dụng. Cái này không dễ, và quan trọng trước tiên là phải nắm được các compiler sinh mã ASM ra sao.
các bạn chỉ mình cách sử dụng dll run-time đi,tui load file dll thì được nhưng getprocaddress thì ko được,cái code là cái sample dll của vc6.0 đó,tui làm 1 cái ứng dụng test chỉ có 1 cái hàm winmain để gọi hàm trong dll đó mà ko được.