thể trùng lặp:
Windows & C++: extern & __declspec(dllimport)
Why/when is __declspec(dllimport) not needed?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
Tôi muốn viết một dự án DLL. Dự án này bao gồm một số DLL. Chúng là phụ thuộc. Tôi xác định một số macro như sau:
#ifdef MYDLL_DECL1
#define DLL_DECL __declspec(dllexport)
#else
#define DLL_DECL __declspec(dllimport)
#endif
tôi xác định MYDLL_DECL1 ... MYDLL_DECLn cho mỗi module. Bởi vì tôi nghĩ nếu tôi xác định cùng một macro mà nó sẽ không hoạt động. Nhưng tôi thực sự muốn xác định chỉ một macro, và tôi đã viết một testbed. Tôi có hai mô-đun. Trong tệp nguồn của moudle thứ hai. Tôi viết mã như sau:
#define MYDLL_DECL
#include "moudle1.h"
#include "moudle2.h"
Nếu tôi sử dụng tên macro cùng "MYDLL_DECL", đối với tệp đầu modle1 của tôi đã xác định "MYDLL_DECL", vì vậy "DLL_DECL" bằng '__declspec (dllexport)'. Trên thực tế trong module2 nó phải bằng "__declspec (dllimport)", Bởi vì module2 import module1. Nhưng tôi thấy nó hoạt động khi tôi chỉ định nghĩa một macro tương tự cho hai mô-đun. Và tôi cũng thấy rằng OpenCV cũng sử dụng methold này vào thư viện của nó
... Cái gì ?? Bạn có thể sử dụng '__declspec (dllimport)' trực tiếp mà không cần phải xác định macro của riêng bạn! –
http://stackoverflow.com/questions/4489441/why-when-is-declspec-dllimport-not-needed – Mohammad
__declspec (dllimport) là một bộ định danh của C/C++. Vì vậy, tôi có thể sử dụng – Samuel