Tôi đã viết một thư viện lớp trong C + + và thành công biên dịch nó trong Linux với g + + như một đối tượng chia sẻ, sau đó tạo ra một vài ứng dụng sử dụng nó. Bây giờ tôi phải chuyển nó sang VS2008. Tôi đã cho tất cả các lớp các tiền tố __declspec (dllexport) bắt buộc, sau đó cố gắng biên dịch nó. Tôi nhận được một đống cảnh báo, mà về cơ bản phải làm với:vấn đề với porting một DLL C + + lớp thư viện để Visual Studio
- lớp ngoại lệ tùy chỉnh của tôi, xuất phát từ std :: runtime_error, mà năng suất: "cảnh báo C4275: không lớp dll giao diện 'std :: runtime_error 'được sử dụng làm cơ sở cho lớp giao diện dll' cci :: FileOperationException '". Làm thế nào tôi phải làm cho một lớp thư viện tiêu chuẩn dll-exportable?
- thông số ngoại lệ trong khai báo hàm của thành viên, điều này gây ra "cảnh báo C4290: đặc điểm ngoại lệ C++ bị bỏ qua ngoại trừ cho biết hàm không phải là __declspec (nothrow)". Tôi đọc ở đâu đó rằng VS không hỗ trợ những điều này, và nó làm ở một nơi khác. Làm thế nào rất khó hiểu.
Tôi đọc mọi người nói rằng xuất các lớp trong DLL thường là một ý tưởng tồi, có vô số thứ có thể sai, và bây giờ tôi có đầu đầy khái niệm như không tương thích nhị phân, dll hell, compiler phiên bản không phù hợp vv, và thành thật mà nói, tôi không thể tạo ra đầu hay đuôi của nó. Cách chính xác, an toàn và dễ dàng để tạo thư viện lớp dùng chung trong Windows là gì?
Cảm ơn.
Có thực sự cần phải là một DLL không? Tạo một thư viện tĩnh sẽ tránh được nhiều vấn đề. –
Điểm tốt. :) Câu hỏi ban đầu vẫn còn đứng, mặc dù - mọi người có thể sử dụng DLL bằng cách nào đó, phải không? (Ngoài ra, bất kỳ cách dễ dàng để thay đổi xây dựng từ chia sẻ đến tĩnh? Sẽ Project-> Properties-> General-> Configuration Type-> Static Library là đủ?) – neuviemeporte
Họ đang sử dụng chúng, nhưng không phải là không có nhiều nhảy hoop. IMHO, một thư viện tĩnh luôn luôn là sự lựa chọn đầu tiên. –