Visual studio có rất nhiều hỗ trợ cho việc nhập thư viện kiểu vào dự án C++ của bạn và sử dụng các đối tượng do đó được xác định. Ví dụ, bạn có thể sử dụng #import
chỉ:
#import "CANoe.tlb"
này sẽ nhập khẩu các thư viện kiểu, và chuyển nó sang tập tin tiêu đề và các file thực thi - cũng có thể nó sẽ khiến các tệp thi hành được xây dựng với dự án của bạn và tiêu đề các tệp được đưa vào, vì vậy đây là rất nhiều thứ ma thuật ngay tại đó.
Sau đó, bạn nhận được rất nhiều typedef cho trình bao bọc con trỏ thông minh cho các loại và đối tượng được xác định trong thư viện kiểu. Ví dụ, nếu có một CoClass gọi Application
mà thực hiện giao diện IApplication
, bạn có thể làm điều này:
ApplicationPtr app(__uuidof(Application));
Điều này sẽ gây tại thời gian chạy, ứng dụng coclass được tạo ra và bị ràng buộc vào biến app
, và bạn có thể gọi vào nó như vậy:
app->DoSomeCoolStuff();
Lỗi xử lý được thực hiện bằng cách kiểm tra kết quả của các cuộc gọi COM, và ném ngoại lệ _com_error thích hợp cần thiết vì vậy đây ngụ ý là bạn cần phải viết ngoại lệ an toàn.
Nguồn
2009-06-24 10:33:34
Nhờ tất cả cho phản ứng nhanh chóng. Tôi không có tệp DLL cho ứng dụng, vì vậy sẽ thích cách tiếp cận này. Nhận các lỗi biên dịch sau, sau #import "CANoe.tlb" trong tệp nguồn của tôi. - ký tự không xác định '0x1' - lỗi cú pháp: thiếu ';' trước số nhận dạng 'A' - thiếu thông số định kiểu - int giả định. Lưu ý: C++ không hỗ trợ mặc định-int - '{': thiếu tiêu đề chức năng (danh sách chính thức kiểu cũ?) Hãy đề xuất, nếu tôi thiếu một số bước. Có cách nào để xác minh nội dung tệp .tlb và giải quyết các lỗi này không. Cảm ơn trước –
Tôi đề nghị bạn cố gắng giải quyết nó và nếu bạn không quản lý chỉ cần hỏi một câu hỏi riêng biệt cung cấp đủ chi tiết. – sharptooth