Có lẽ là một câu hỏi đơn giản nhưng tôi chỉ có Linux để kiểm tra mã này ở nơi __declspec (dllexport) là không cần thiết. Trong mã hiện tại __declspec (dllexport) nằm trước tất cả các tệp trong tệp .h nhưng chỉ ở trước 50% các hàm trong tệp cpp nên tôi tự hỏi liệu chúng có thực sự cần thiết trong tệp cpp không?Là __declspec (dllexport) cần thiết trong các tệp cpp
Trả lời
Không, chỉ cần thiết trong tiêu đề.
Dưới đây là link để biết thêm thông tin.
Mở rộng trên những gì Vinay đã nói, tôi đã thường thấy một macro được định nghĩa
#if defined(MODULENAME_IMPORT)
#define EXPORTED __declspec(dllimport)
#elif defined(MODULENAME_EXPORT)
#define EXPORTED __declspec(dllexport)
#endif
Sau đó, trong phần đầu của bạn, bạn làm
thiết lập các định nghĩa phù hợp trong các thiết lập dự án cho dự án làm việc nhập/xuất.
Không, nó không được yêu cầu trong tệp cpp. Chỉ trong tuyên bố nó là bắt buộc.
Ví dụ: nếu tôi có lớp CMyClass. Nếu tôi muốn xuất này sau đó .h sẽ có
đang .h máy chủ
__declspec (dllexport) CMyClass { };
Trong mã khách hàng ví dụ, trong đó sử dụng lớp này bạn phải chuyển tiếp khai báo lớp như
Khách hàng mã
__declspec (dllimport) CMyClass;
// Mã để sử dụng lớp
Bạn có thể sử dụng trong tập tin cpp cũng có khi bạn đã templated mã và bạn đang instantiating trong tập tin cpp thì bạn cần phải xuất khẩu định nghĩa khi nó được khởi tạo. Nhưng ngay cả trong trường hợp này, tôi đã thấy rằng làm trong .h cũng hoạt động. Trên các cửa sổ, bạn có thể sử dụng dumpbin.exe/exports * .dll để xem những chữ ký nào được xuất, cũng có tiện ích tương tự trong Linux. Điều này sẽ cung cấp cho bạn một ý tưởng như thế nào chữ ký được xuất khẩu.
- 1. Mã "DECLDIR __declspec (dllexport)" thực sự là gì?
- 2. những gì hiện __declspec (dllexport) làm, khi thêm nó trước khi một chức năng nhập khẩu
- 3. __declspec là gì và khi nào tôi cần sử dụng?
- 4. thứ tự các hàm trong tệp cpp
- 5. Macro cho công tắc dllexport/dllimport
- 6. loại trả về trước hoặc sau __declspec?
- 7. Bao gồm tệp .cpp?
- 8. Qt, CMake, Visual Studio và Q_OBJECT trong các tệp cpp
- 9. Khi nào là từ khóa "tên tệp" cần thiết?
- 10. Tạo các tệp .cpp từ tệp .h visual studio
- 11. Các plugin cần thiết trong VIM cho Latex là gì?
- 12. Cấu hình các nguồn cpp trong gradle
- 13. Android.mk, bao gồm tất cả các tệp cpp
- 14. GLES2 Là glBindAttribLocation() Cần thiết?
- 15. Sử dụng biến chuỗi tạo tệp trong tệp CPP
- 16. Làm cách nào để xuất/nhập cấu trúc C từ DLL/ứng dụng bảng điều khiển bằng cách sử dụng __declspec (dllexport/import)
- 17. Chỉ định trễ tải dll với #pragma trong tệp cpp
- 18. __declspec (dllimport) làm thế nào để tải thư viện
- 19. Sự khác biệt giữa tệp .cpp và tệp .h là gì?
- 20. CMake: Cách định vị tệp .cpp trong thư mục "src"?
- 21. Tại sao session_ destroy() là cần thiết?
- 22. Tạo .h và .cpp từ tệp .ui
- 23. Sử dụng nhiều tệp .cpp trong chương trình C++?
- 24. Trong Vim cách chuyển đổi nhanh giữa các tệp .h và .cpp có cùng tên?
- 25. thiếu kiến trúc cần thiết armv7 trong tệp?
- 26. là chèn() cần thiết trong một bản đồ hoặc unordered_map?
- 27. __declspec (dllimport) thực sự có nghĩa là gì?
- 28. Điều gì là cần thiết để có trong AssemblyInfo.cs?
- 29. : trường 'Số true' làm là cần thiết trong validation jquery
- 30. cách giữ mã hạt nhân bên trong tệp .cu riêng biệt ngoài tệp .cpp chính?