这是我第一次处理 DLL。根据 MSDN 文档,我创建了一个头文件fooExports.h,其中包含根据预处理器定义定义的宏:
#ifdef FOODLL_EXPORTS
#define FOO_API __declspec( dllexport )
#else
#define FOO_API __declspec( dllimport )
我的意图是在我的 DLL 实现和控制台应用程序中都使用这个头文件。到目前为止,导入和导出功能工作得很好。当我尝试导出一个已定义的结构时,问题就出现了,我需要该结构作为其中一个导出函数的参数。例如,在前面提到的头文件中我声明FOO_API void foo( FooParams *args )
了args
一个结构体,定义如下:
typedef struct FooParams
{
char *a;
char *b;
void *whatever; //some other type
} FooParams;
这个结构必须在foo.h而不是fooExports.h中定义。有什么方法可以导出这个结构而不将其从原始头文件中取出(考虑到我想将导出/导入集中在fooExports.h中)。有什么更好的方法来做到这一点?DLL 是所有 C 以及使用它的客户端应用程序。