Giải phỏp tạo thư viện liờn kết động phục vụ xõy dựng chương trỡnh

Một phần của tài liệu nghiên cứu sử dụng cấu trúc DCEL làm cơ sở để khai thác ứng dụng dữ liệu bản đồ số địa chính việt nam (Trang 94)

Trong IDE (Integrated Development Environment-mụi trường phỏt triển tớch hợp) của VB6, khi chọn dịch chương trỡnh thành file DLL (kể cả khi dịch chương trỡnh thành file EXE) thỡ IDE sẽ trước tiờn gọi file C2.exe để dịch mó lệnh thành cỏc file *.OBJ. Sau đú, gọi tiếp file Link.exe để liờn kết cỏc file *.OBJ lại tạo ra file *.DLL hoặc file *.EXE. Vậy file Link.exe đúng

vai trũ liờn kết cỏc file OBJ để tạo ra tệp dạng Binary (Exe hoặc DLL) cuối cựng. Cả file C2.Exe và file Link.exe đều nằm trong C:\Program

Files\Microsoft Visual Studio\VB98.

Trong VB6, khi IDE gọi file Link.exe để liờn kết cỏc file *.OBJ lại, sẽ truyền cho file Link.exe một loạt cỏc tham số như: đường dẫn của cỏc file *.OBJ, kiểu file đớch sẽ tạo ra (*.DLL hay *.EXE), đường dẫn của đớch sẽ được tạo ra và một số cỏc tham số khỏc nữa. Tuy nhiờn, trong nhiều tham số này, lại thiếu mất một tham số là "/DEF". Tham số "/DEF" chớnh là tham số chỉ ra đường dẫn của cỏc tệp Module Definition (cỏc tệp *.DEF). Thiếu cỏc tệp này, DLL tạo ra sẽ khụng thể sử dụng được cỏc hàm Public (dựng chung) bằng phương phỏp Declare (Cụng khai). Vỡ lẽ đú, VB6 cài đặt chuẩn khụng tạo được DLL dựng chung. Giải phỏp xử lý là xõy dựng lại file Link.exe để thờm tham số này vào lỳc biờn dịch. [18].

Như vậy, cần tạo ra 1 file Link.exe giả đặt trong thư mục C:\Program Files\Microsoft Visual Studio\VB98, cũn file Link.exe thật thỡ đổi tờn thành 1 file khỏc (vớ dụ là LinkThat.exe). Khi IDE gọi file Link.exe giả (xõy dựng lại) thỡ file Link.exe này sẽ làm nhiệm vụ đọc cỏc tham số được IDE truyền sang, thờm tham số "/DEF" vào và gọi file LinkThat.exe với tham số mới (đó cú /DEF). Tất nhiờn là phải kiểm tra, nếu cú tồn tại cỏc file *.DEF và Project (dự ỏn) cần tạo là Project kiểu DLL thỡ mới thờm tham số.

Khi xõy dựng thư viện liờn kết động tạo một Project mới trong VB6, kiểu Project là ActiveX DLL. Để nguyờn Class1 mà VB6 đó tạo sẵn, khụng cần viết mó lệnh gỡ vào đú cả, nhưng vẫn phải giữ lại vỡ VB6 cần phải cú 1 Class trong Project kiểu ActiveX DLL thỡ mới chạy. Sau đú, thờm vào một module để chứa cỏc hàm cần xõy dựng bỡnh thường như cỏc Sub hay Function với khai bỏo Public (dựng chung).

Tiếp theo, tạo tệp Module Definition File (*.DEF): Sử dụng trỡnh soạn thảo NotePad soạn một file cựng tờn với tờn thư viện cần tạo và cú đuụi là DEF với nội dung:

NAME Ten

LIBRARY Tenthuvien

DESCRIPTION "Mo ta cua tep DLL" EXPORTS DllMain @1

...

Theo sau EXPORTS là tờn cỏc hàm (phõn biệt hoa-thường), con số sau ký tự @ là thứ tự của hàm đó viết trong Module ở trờn, lưu tệp soạn thảo này vào thư mục chứa file Project DLL đó tạo ở trờn.

Tiếp theo, dịch Project đó tạo ở bước trờn tạo thành file DLL dạng Standard, khi đó cú thư viện liờn kết động dạng *.DLL (vớ dụ:

MyLibrary.Dll). Kết quả, được thư viện liờn kết động *.DLL dạng chuẩn, cú thể sử dụng trong cỏc ngụn ngữ lập trỡnh khỏc.

Trong VB6, sử dụng DLL bằng cấu trỳc:

Private Declare Function TenHam Lib "TenDLL" (DSB) As KieuHam

Trong đú TenHam là tờn hàm đó được định nghĩa trong thư viện liờn kết động cú tờn TenDLL; DSB là danh sỏch biến của hàm TenHam; KieuHam là kiểu dữ liệu trả về của hàm TenHam.

Vớ dụ: Private Declare Function Min Lib "MyLibrary.Dll" ByVal a As Integer, Byval b As Integer) As Integer

Trong vớ dụ trờn, thư viện MyLibrary.Dll cú chứa hàm Min với cỏc biến a, b cú kiểu số nguyờn, trả ra giỏ trị nhỏ nhất của hai giỏ trị đưa vào ứng với a, b và là số nguyờn.

Bằng cỏch tạo thư viện liờn kết động như vậy, cỏc hàm chương trỡnh đó xõy dựng cú thể sử dụng được ở cỏc ngụn ngữ lập trỡnh và chương trỡnh khỏc.

Một phần của tài liệu nghiên cứu sử dụng cấu trúc DCEL làm cơ sở để khai thác ứng dụng dữ liệu bản đồ số địa chính việt nam (Trang 94)

Tải bản đầy đủ (DOCX)

(119 trang)
w