2012-02-27 26 views
11

Có cách nào để xuất khẩu chỉ là một chức năng để DLL cos trong hướng dẫn họ luôn lớp xuất khẩu với một cái gì đó như:Xuất chức năng để DLL mà không cần lớp

static __declspec(dllexport) double Add(double a, double b); 

Bên trong một lớp học tuyên bố trên không gây ra bất kỳ vấn đề, nhưng không có lớp học, nó cung cấp:

dllexport/dllimport requires external linkage 

Trả lời

14

Vấn đề là bộ định danh "tĩnh". Bạn cần phải loại bỏ nó bởi vì nó có nghĩa là điều sai trái trong ngữ cảnh này. Hãy thử chỉ:

__declspec(dllexport) double Add(double a, double b); 

Đó là những gì bạn cần có trong tệp tiêu đề khi biên dịch DLL. Bây giờ để truy cập vào các chức năng từ một chương trình sử dụng các DLL, bạn cần phải có một tập tin tiêu đề với điều này:

double Add(double a, double b); 

Bạn có thể sử dụng cùng một tập tin tiêu đề cho cả hai mục đích nếu bạn sử dụng #ifdefs:

#ifndef MYDLL_EXPORT 
    #define MYDLL_EXPORT 
#endif 

MYDLL_EXPORT double Add(double a, double b); 
Các vấn đề liên quan