2009-09-30 43 views

Trả lời

11

Bạn không thể nhập lớp học. Bạn chỉ có thể nhập các hàm. Rudy Velthuis has written at length on the topic. Mặc dù bạn có thể không trực tiếp sử dụng một ++ lớp C xuất khẩu, ông mô tả một vài kỹ thuật để đạt được hiệu quả tương tự:

  • "Flatten" đối tượng, vì vậy ở phía bên gọi điện thoại không có đối tượng nữa, chỉ cần một con trỏ được chuyển tới DLL cùng với các tham số khác cho một loạt các hàm bao bọc các phương thức của đối tượng. Viết trình bao bọc rất đơn giản, mặc dù nó có thể tẻ nhạt.

  • Sử dụng các lớp ảo thuần túy. Các trình biên dịch Windows C++ và Delphi có chung các bố trí VMT, vì vậy nếu lớp C++ có thể được mô tả bằng danh sách các phương thức ảo thuần túy, bạn có thể tạo một khai báo Delphi tương đương, thực hiện một số kiểu-casting với con trỏ đối tượng được DLL trả về, và tiếp tục.

Ví dụ hoàn chỉnh về cả hai cách được đưa ra trong bài viết.

4

Bạn không thể sử dụng các lớp C++ được xuất từ ​​một DLL theo như tôi biết trong Delphi; bạn có thể sử dụng các hàm C và bạn có thể nhập các lớp COM vào Delphi.

Các vấn đề liên quan