Win32 DLL导出函数参数最佳实践

mba*_*i23 1 c++ winapi dllexport

我正在写一个将导出函数和类的DLL.但是现在我有一个关于导出函数的问题.

如果我的函数签名如下:

__declspec(dllexport) int fn1(FILE *theFile);
Run Code Online (Sandbox Code Playgroud)

我应该包含所以定义FILE吗?这里的最佳做法是什么?如果我想导出一个接受或返回自定义类型的函数,那么这些类型的头文件是否也应包含在导出的头文件中?

Who*_*aig 5

不要转发-dell标准库类型和函数.这就是提供库头的内容.您的文件应该布置为:

#ifndef MYLIBRARY_H
#define MYLIBRARY_H

#ifdef  MYLIBRARY_EXPORTS
#define MYLIBRARY_EXPORT    __declspec(dllexport)
#else
#define MYLIBRARY_EXPORT    __declspec(dllimport)
#endif

// required headers
#include <stdio.h>

// exported/imported functions
MYLIBRARY_EXPORT int fn1(FILE *theFile);

#endif
Run Code Online (Sandbox Code Playgroud)

您的DLL项目是使用已MYLIBRARY_EXPORTS定义的部分或已定义的预处理器宏(可以通过多种方式配置)构建的,并且DLL的使用者不会定义它.

这是MS用于其向导罐装DLL项目生成器的通用布局.考虑在您的项目中也这样做.最重要的是,包括库所需的标准标题,以正确定义它所需要的内容,以及它提供的内容.